獲取 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/*

相關內容