Я пытаюсь сжать или сжать все файлы и подкаталоги в текущем каталоге и сохранить его в файл, который я заархивирую. Проблема в том, что -x shitch не работает - файлы архивируются и сохраняются в файл с произвольным именем.

zip -r backup.zip ./* -x backup.zip

Это то, что я пытался, но код не работал должным образом.

Есть ли способ сделать это, не сохраняя каталог архива .. и затем перемещая его обратно в ./ dir?

Заранее спасибо.

2 ответа2

0

Zip не будет пытаться заархивировать свой собственный файл, поэтому вам не нужно использовать -x. Предполагая, что backup.zip уже существует в текущем каталоге, и мы пытаемся обновить zip:

# zip -r backup.zip ./*
updating: libproxychains4.so (deflated 61%)
updating: README (deflated 55%)
updating: TODO (deflated 17%)
updating: COPYING (deflated 62%)
updating: src/ (stored 0%)
updating: src/proxychains (deflated 65%)
updating: src/core.c (deflated 70%)
updating: src/common.o (deflated 68%)
updating: src/core.o (deflated 66%)
updating: src/main.c (deflated 58%)
updating: src/core.h (deflated 66%)
updating: src/libproxychains.c (deflated 69%)
updating: src/proxyresolv (deflated 30%)
updating: src/main.o (deflated 67%)
updating: src/libproxychains.o (deflated 70%)
updating: src/common.h (deflated 55%)
updating: src/proxychains.conf (deflated 57%)
updating: src/common.c (deflated 62%)
updating: proxychains.lsm (deflated 28%)
updating: configure (deflated 65%)
updating: AUTHORS (deflated 45%)
updating: dist/ (stored 0%)
updating: dist/config.mak (deflated 43%)
updating: ChangeLog (deflated 66%)
updating: config.mak (deflated 37%)
updating: proxychains4 (deflated 62%)
updating: tests/ (stored 0%)
updating: tests/test_getaddrinfo.c (deflated 51%)
updating: Makefile (deflated 58%)

Используйте -x, если вам действительно нужно исключить файл из резервной копии.

0

./* раскрывается оболочкой перед отправкой в команду, поэтому единственный способ, которым zip попытается включить backup.zip - это если он существует до запуска команды.

tar может сделать это:

$ cd -- "$(mktemp -d)" 
$ touch -- $'--$`!*@\a\b\E\f\r\t\v\\\'"\360\240\202\211 \n'
$ tar -czf test.tar.gz ./*
$ ls
--$`!*@???????\'" ?  test.tar.gz
$ tar -tvf test.tar.gz 
-rw-rw-r-- user/group      0 2013-06-26 14:38 ./--$`!*@\a\b\033\f\r\t\v\\'" \n

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .