TAR 或 ZIP 当前目录(不包括生成的文件)

TAR 或 ZIP 当前目录(不包括生成的文件)

我正在尝试压缩或 tar 当前目录中的所有文件和子目录并将其保存到我正在压缩的文件中。问题是 -x shitch 不起作用 - 文件被压缩并保存到随机命名的文件中。

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

这是我尝试过的但是代码不能正常工作。

有没有办法做到这一点,而无需保存档案..目录然后将其移回./目录?

提前致谢。

答案1

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。

答案2

./*由外壳扩展被发送到命令,因此唯一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
--$`!*@???????\'"

相关内容