Tôi phải tạo một kho lưu trữ bằng lệnh gzip (không phải tar - cần thiết) và kho lưu trữ phải chứa các tệp từ thư mục khác - ví dụ: / etc. Tôi đã cố gắng sử dụng lệnh
gzip myetc.gz /etc
Nhưng nó không hoạt động.
Tôi phải tạo một kho lưu trữ bằng lệnh gzip (không phải tar - cần thiết) và kho lưu trữ phải chứa các tệp từ thư mục khác - ví dụ: / etc. Tôi đã cố gắng sử dụng lệnh
gzip myetc.gz /etc
Nhưng nó không hoạt động.
Câu trả lời:
Gzip chỉ hoạt động với một tệp duy nhất hoặc luồng - dữ liệu được chuyển sang gzip. Vì vậy, trước tiên bạn cần tạo một tệp, như với tar, và sau đó bạn có thể gzip nó. Tùy chọn khác là gzip tất cả các tệp riêng lẻ, sau đó tar vào một tệp.
Cả hai giải pháp này đều ngu ngốc và không nên sử dụng. Bạn nên sử dụng tar với tùy chọn nén tích hợp và thực hiện tất cả trong một lệnh.
.tar.gz
...
cat filename | grep blah
ngu ngốc. Nó cũng ít hơn nhiều so với tối ưu vì nó sẽ sử dụng một không gian tạm thời lớn. Tôi không biết nếu tôi gọi nó là ngu ngốc nhiều như không chính đáng, không tối ưu, và nói chung chỉ là loại xấu xí. Chà, làm việc ngu quá.
fork()
.
gzip
làm việc với các tập tin, không phải thư mục. Do đó, để tạo một kho lưu trữ của một thư mục bạn cần sử dụng tar
(sẽ tạo một tarball duy nhất trong số nhiều tệp):
tar cvf myetc.tar /etc
hoặc, cho một kho lưu trữ được nén:
tar cvzf myetc.tar.gz /etc
cd / ; tar cf - ./etc | gzip -c - > myetc.tar.gz
(nếu bạn đang thắc mắc tại sao tôi tar "./etc" thay vì "/ etc", thì đó là vì trên các hệ thống cũ đó, khi sử dụng tar xvf, nó sẽ xuất ra / etc và ghi đè lên nó ... [hoặc bạn phải sử dụng "pax" trong trường hợp đó]). Lệnh nghịch đảo, tức là trích xuất kho lưu trữ bên dưới "/ where": cd /somewhere ; gzip -dc < /the/location/of/myetc.tar.gz | tar xvf -
Nếu bạn thực sự không có sẵn tar, bạn có thể sử dụng gzip để tạo bản sao lưu của thư mục bằng tùy chọn (-r - đệ quy), nhưng có lẽ đó không chính xác là những gì bạn đang mong đợi ...
Trước tiên, bạn sẽ cần sao chép thư mục của mình sang tên khác, nếu bạn muốn giữ thư mục gốc không thể chạm tới.
#cp -a directory my_gzip_alone_backup
Thứ hai, bạn sẽ nén tất cả các tệp trên thư mục theo cách đệ quy (-r).
#gzip -r my_gzip_alone_backup
Bây giờ chúng ta hãy xem bên trong bản sao lưu my-gzip-alone. Bạn sẽ không có một tệp myfile.gz như bạn mong đợi, nhưng rất nhiều tệp được nén theo cách đệ quy. Nhưng nó không tốt để làm điều đó với vv vì liên kết tượng trưng ...
Để giải nén thư mục, logic tương tự có thể được áp dụng với gunzip.
Một cách khác là chuyển đổi thư mục thành một tệp duy nhất, nếu bạn không có tar để làm điều đó, nhưng hãy sử dụng dd, như đã trình bày trong bài đăng này: https://askubfox.com/questions/626634/converting-a -file-to-thư mục
gzip
không phải làzip
. Chúng là những công cụ khác nhau hoạt động khác nhau.