获取 tar 以排除某些文件

获取 tar 以排除某些文件

我想要进行备份,但我的磁带没有空间容纳所有内容,因此我决定不备份虚拟机(超过 1tb)。

我有虚拟机.local/share/libvirt/images

我用了这个命令

tar cvf - /home/user -X altro/file.esclude  | openssl aes-256-cbc -salt  -k "password" | dd bs=80M of=/dev/st0

altro/file.esclude把这一行/home/user/.local/share/libvirt/images

但 tar 会忽略排除文件并备份所有内容!

所以我用

tar cvf - /home/user --exclude '/home/user/.local/share/libvirt/images'  | openssl aes-256-cbc -salt  -k "password" | dd bs=80M of=/dev/st0

还有……同样的事情!

为什么?


系统是带有 gnu tar 的 Slackware 14.2

答案1

X 必须位于要包含在 tar 文件中的路径之前。

所以:

tar cvf - /home/user -X altro/file.esclude  | openssl aes-256-cbc -salt  -k "password" | dd bs=80M of=/dev/st0

是错的。

这:

tar cvf - -X /home/user/altro/file.esclude /home/user | openssl aes-256-cbc -salt  -k "pass" | dd bs=80M of=/dev/st0

是对的

在排除文件中,我使用

/home/user/.local/share/libvirt/images/*

相关内容