示范

示范

我正在将帐户移动到另一台服务器,并且zip -r backup.zip *在服务器的 home 上使用命令压缩终端中的所有内容/。正在创建存档,当它到达www符号链接时,它开始添加之前添加的相同文件夹,但这次在www/它们前面。如何更改上述命令以排除上面提到的两个符号链接?

TIA

答案1

这就是您正在寻找的内容(来自man zip):

   -y
   --symlinks
          For  UNIX and VMS (V8.3 and later), store symbolic links as such
          in the zip archive, instead of compressing and storing the  file
          referred  to  by  the  link.   This can avoid multiple copies of
          files being included in the archive as zip recurses  the  direc‐
          tory trees and accesses files directly and by links.

或者排除:

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

示范

假设您有以下符号链接/目录:

$ ls -ld /*
...
lrwxrwxrwx ... /access-logs -> /var/access-logs
lrwxrwxrwx ... /www -> /var/www
...
$ ls -ld /var/*
...
drwxr-xr-x ... /var/access-logs
drwxr-xr-x ... /var/www
...

如果您想同时包含/var/access-logs/var/www,但又不想重复它们的内容,则追加--symlinks就足够了。/access-logs并将/www作为符号链接存储在 zip 文件中。

如果您也不想要/var/access-logs的内容,您可以附加-x "/var/access-logs/*"到 zip 命令,它将被排除。

tar

编辑:正如 @Bib 指出的,您可以使用tarwhich 命令在 Linux 中归档多个文件。

tar默认情况下是“无取消引用”(等于--symlinks中的模式zip),因此它将仅将符号链接存档为符号链接,它不会像那样遵循它们zip

通过选项-I,我们可以为存档选择一个压缩程序。zstd具有非常好的比率和速度。但是,如果您确实关心小尺寸改进并且不介意速度慢得多,则可以替换zstdxz.请注意,必须安装您要使用的命令。

存档/*排除/excluded-dir-1/excluded-dir-2使用zstd压缩:

tar cvf backup.tar.zst -I "zstd" --exclude="/excluded-dir-1" --exclude="/excluded-dir-2" /*

将存档内容提取到/backup

tar xvf backup.tar.zst -C "/backup"

相关内容