如果我使用这个命令:
sudo tar -zcvpf exclusion.tar.gz mybkup/ --exclude=mybkup/etc/ssh/
然后,如果我尝试查看 ssh 目录是否包含在 tarball 内容中,我会发现实际上包含了该目录:
[user@smashingx1 ~]$ tar -tvzf exclusion.tar.gz | grep ssh
lrwxrwxrwx user/user 0 2016-11-30 04:26 mybkup/etc/systemd/system/multi-user.target.wants/sshd.service -> /usr/lib/systemd/system/sshd.service
-rw-r----- user/user 506 2016-11-30 04:26 mybkup/etc/sysconfig/sshd
-rw-r--r-- user/user 5996 2016-11-30 04:26 mybkup/etc/xdg/autostart/gnome-keyring-ssh.desktop
drwxr-xr-x user/user 0 2016-11-30 04:26 mybkup/etc/ssh/
-rw-r--r-- user/user 242153 2016-11-30 04:26 mybkup/etc/ssh/moduli
-rw-r--r-- user/user 2208 2016-11-30 04:26 mybkup/etc/ssh/ssh_config
-rw-r--r-- user/user 382 2016-11-30 04:26 mybkup/etc/ssh/ssh_host_rsa_key.pub
-rw-r--r-- user/user 162 2016-11-30 04:26 mybkup/etc/ssh/ssh_host_ecdsa_key.pub
-rw-r--r-- user/user 4760 2016-11-30 04:26 mybkup/etc/ssh/sshd_config
-rw-r--r-- user/user 82 2016-11-30 04:26 mybkup/etc/ssh/ssh_host_ed25519_key.pub
-rw-r----- user/user 1675 2016-11-30 04:26 mybkup/etc/ssh/ssh_host_rsa_key
-rw-r----- user/user 227 2016-11-30 04:26 mybkup/etc/ssh/ssh_host_ecdsa_key
-rw------- user/user 4361 2016-11-30 04:26 mybkup/etc/ssh/sshd_config.rpmnew
-rw-r----- user/user 387 2016-11-30 04:26 mybkup/etc/ssh/ssh_host_ed25519_key
-rw-r--r-- user/user 8730 2016-11-30 04:26 mybkup/etc/selinux/targeted/modules/active/modules/rssh.pp
-rw-r--r-- user/user 18774 2016-11-30 04:26 mybkup/etc/selinux/targeted/modules/active/modules/ssh.pp
-rw-r--r-- user/user 904 2016-11-30 04:26 mybkup/etc/pam.d/sshd
但如果我不在目录路径末尾添加最后一个“/”,那么它会排除该目录:
sudo tar -zcvpf exclusion.tar.gz mybkup/ --exclude=mybkup/etc/ssh
tar -tvzf exclusion.tar.gz | grep ssh
lrwxrwxrwx user/user 0 2016-11-30 04:26 mybkup/etc/systemd/system/multi-user.target.wants/sshd.service -> /usr/lib/systemd/system/sshd.service
-rw-r----- user/user 506 2016-11-30 04:26 mybkup/etc/sysconfig/sshd
-rw-r--r-- user/user 5996 2016-11-30 04:26 mybkup/etc/xdg/autostart/gnome-keyring-ssh.desktop
-rw-r--r-- user/user 8730 2016-11-30 04:26 mybkup/etc/selinux/targeted/modules/active/modules/rssh.pp
-rw-r--r-- user/user 18774 2016-11-30 04:26 mybkup/etc/selinux/targeted/modules/active/modules/ssh.pp
-rw-r--r-- user/user 904 2016-11-30 04:26 mybkup/etc/pam.d/sshd
我很困惑,因为我认为通过指示 tar 排除目录,它将排除目录及其内容,但显然情况并非如此,有人可以解释一下吗?
答案1
我不确定你在多大程度上认为这是一个解释,但是排除tar 的选项采用要排除的事物的名称。在这种情况下,您想要排除一个名为SSH。实际上没有什么叫SSH/。您给出的排除模式不会匹配任何内容。