Thêm tệp đã giải nén vào thư mục đã nén


32

Tôi đang cố gắng thêm các tập tin đã giải nén vào một thư mục đã được nén new folder.zip. Có thể sử dụng zip -r new folder.zipsau khi thêm một số tệp được giải nén vào chúng? Lệnh này sẽ nén thư mục? Có sự thay thế nào để làm điều này?


bạn có thể dẫn nó, giải nén tập tin gốc | sau đó nén toàn bộ nội dung như cách bạn tạo một tệp hoàn toàn mới. Tôi không chắc chắn làm thế nào bạn làm điều này với một lệnh duy nhất.
unixmiah

Câu trả lời:


44

Sử dụng cờ cập nhật: -u

Thí dụ:

zip -ur existing.zip myFolder

Lệnh này sẽ nén và thêm myFolder(và nội dung của nó) vào existing.zip.


Sử dụng nâng cao:

Cờ cập nhật thực sự so sánh các tệp đến với các tệp hiện có và sẽ thêm các tệp mới hoặc cập nhật các tệp hiện có.

Do đó, nếu bạn muốn thêm / cập nhật thư mục con cụ thể trong tệp zip, chỉ cần cập nhật nguồn theo ý muốn, sau đó nén lại toàn bộ nguồn bằng -ucờ. Chỉ các tập tin thay đổi sẽ được nén.

Nếu bạn không có quyền truy cập vào các tệp nguồn, bạn có thể giải nén tệp zip, sau đó cập nhật các tệp mong muốn và sau đó nén lại bằng -ucờ. Một lần nữa, chỉ các tệp đã thay đổi sẽ được nén.

Thí dụ:

Cấu trúc nguồn gốc


ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│   ├── file3.txt
│   ├── Logs
│   │   ├── logs1.txt
│   │   ├── logs2.txt
│   │   ├── logs3.txt

Cấu trúc nguồn cập nhật


ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│   ├── file3.txt
│   ├── Logs
│   │   ├── logs1.txt
│   │   ├── logs2.txt
│   │   ├── logs3.txt 
│   │   ├── logs4.txt <-- NEW FILE 

Sử dụng

$ zip -ur existing.zip ParentDir 
> updating: ParentDir/ChildDir/Logs (stored 0%)
>   adding: ParentDir/ChildDir/Logs/logs4.txt (stored 96%)

Cảm ơn! Làm thế nào tôi có thể chỉ định thư mục trong zip để thêm nó vào?
Aaron Esau

Tôi đã thêm một phần để trả lời câu hỏi của bạn. :)
Ethan Strider

0

Tôi tin rằng bạn có thể thêm tệp bằng lệnh này:

zip -r zipfile.zip newfile.txt newfile1.txt

Các -rtùy chọn của lệnh zip cho phép bạn thêm các tập tin.


-rlà tùy chọn đệ quy.
ctrl-alt-delor

@richard, tôi sẽ sửa nó. Hãy tham gia một vài
ryekayo

@ Richard, lần lượt ra nguồn tôi rằng từ nói rằng bạn có thể sử dụng lệnh -r để sửa đổi một tập tin nén hiện có: linuxnix.com/2014/05/...
ryekayo

2
thêm - Cập nhật các mục hiện có và thêm tệp mới. Nếu kho lưu trữ không tồn tại, hãy tạo nó. Đây là chế độ mặc định. (không có tùy chọn nào là cần thiết để thay thế hoặc thêm tệp. -rCó thể được sử dụng nếu thêm thư mục hoặc khi không thêm thư mục. Bất cứ lúc nào bạn không muốn chỉ thêm thư mục và không có nội dung, thì hầu như mọi lúc Vì vậy, trong ngắn hạn, ví dụ là đúng, nhưng giải thích là sai.) (Tốt nhất để kiểm tra nó, đây chỉ là cách giải thích của tôi về hướng dẫn).
ctrl-alt-delor

2
Vì lý do an toàn, bạn có muốn sửa đổi một kho lưu trữ hiện có không? Thay vào đó, ít nhất tôi sẽ tạo một bản sao an toàn, thực hiện thêm và sau đó kiểm tra lại tính toàn vẹn của kho lưu trữ trước khi cam kết với bản mới.
mdpc

0

Cờ -u hoạt động cho các tệp để

zip -ur zip_to_upload.zip file_to_add.txt

Trân trọng


0

Tôi đã sử dụng thành công ziplệnh. với tùy chọn grow (-g), để thêm thư mục con folder1/folder2chứa các tệp fileA.txtfileB.txt:

zip -gr folder.zip folder1/folder2

-rphương tiện recurse dir.

Theo hiểu biết của tôi -g nên phát triển các tệp zip, không tạo tệp zip mới (có thể hữu ích với kho lưu trữ zip rất lớn). Trong trường hợp có vấn đề, trước tiên bạn có thể thử tạo các thư mục con trong thư mục.zip với (vd):

zip -g folder.zip folder1
zip -g folder.zip folder2

0

Nếu bạn có nhiều tệp ở cùng một nơi với kho lưu trữ zip của bạn và bạn muốn sao chép tất cả chúng vào kho lưu trữ, bạn có thể làm:

zip -ur zipfile.zip !(zipfile.zip)

Điều này cập nhật tệp zip của bạn ( -utùy chọn) theo cách đệ quy ( -rtùy chọn) với tất cả các tệp được tìm thấy ngoại trừ chính tệp zip ( !là phủ định của tệp zip)

Sau đó, bạn có thể chỉ cần xóa tất cả các tệp ngoại trừ tệp zip theo cùng một quy tắc ở trên:

rm !(zipfile.zip)
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.