Làm thế nào để tar / gỡ bỏ đầu ra khi đang bay


27

Cách thành ngữ để làm như sau là gì

  • tar để stdout
  • đọc đầu ra tar này từ thiết bị xuất chuẩn và giải nén sang một số thư mục khác.

Giải pháp của tôi là tar --to-stdout .. | tar -C somefolder -xvf -

Nhưng có thể có nhiều cách thành ngữ hơn để làm điều đó.

Câu trả lời:


34

-f -Tùy chọn tương tự cũng hoạt động cho tarring.

tar -cf - something | tar -C somefolder -xvf -

GNU tar sử dụng stdio theo mặc định:

tar -c something | tar -C somefolder -xv

rsync cũng phổ biến.

rsync -av something/ somefolder/

9

Chỉ cần thêm một trường hợp sử dụng ở đây. Tôi đã có một cấu trúc thư mục lớn trên một hệ thống gần hết dung lượng đĩa và muốn kết thúc với một tệp tar.gz của cấu trúc thư mục trên một máy khác có nhiều dung lượng.

tar -czf - big-dir | ssh user@host 'cat > /path/to/big-dir.tar.gz'

Điều này tiết kiệm chi phí mạng và có nghĩa là bạn không phải tar ở phía bên kia trong trường hợp bạn muốn sử dụng rsync để chuyển.


Netcat là hoàn hảo cho việc này. (Cát từ vật chủ này sang vật chủ khác).
Hennes

3
@ Hennes: Với việc thiếu xác thực, kiểm tra tính toàn vẹn, mã hóa dữ liệu, cũng như phải tự khởi động nó ở cả hai bên cho mỗi lần chuyển riêng lẻ (tức là 2 × công việc), nghe có vẻ hơi hoàn hảo
grawity

Hầu hết thời gian tôi gzip nó trước khi đổ nó qua mạng. Bất kỳ lỗi integretiy nào cũng có khả năng hiển thị là lỗi giải nén (mặc dù tôi không bao giờ gặp phải bất kỳ lỗi nào khi sử dụng). Khi bắt đầu hai chương trình: Aye, đúng.
Hennes

3
Nó có thể làm việc nhiều hơn, nhưng để gửi một kho lưu trữ nén lớn qua một liên kết trong một hoạt động nhạy cảm với thời gian giữa các máy trong mạng cục bộ được bảo mật hoặc qua VPN, việc truyền qua nc sẽ nhanh hơn đáng kể so với SSH (qua mạng 1Gb, thường theo hệ số 2). Gửi qua tổng số md5 của kho lưu trữ để kiểm tra tính toàn vẹn.
đệm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.