我正在考虑如何将 .tar.gz HOME 备份安全地恢复到几乎新的 Debian 系统中(某些文件可以存在并且应该保留rsync -u
)。我的主电脑坏了,所以我必须使用备份 Debian 系统,但我需要主系统的 HOME 备份(仅以下主文件)。系统特点
$HOME
是/home/masi/
以root身份进行家庭备份的代码
#1. [但因循环符号链接而失败]
# http://unix.stackexchange.com/a/291720/16920
nice tar czf /media/masi/ext4Masi/backup_home_20.12.2016.tar.gz $HOME/
我的目录中有符号链接。我注意到 tarball 不包含所有目录,例如$HOME/Documents/
和/或/home/masi/Documents/
.该目录有许多符号链接,也许还有一些循环符号链接。 tarball 再次包含$HOME/Desktop/
和 ,$HOME/Downloads
其中不应包含任何循环符号链接,并且Downloads
目录根本没有符号链接。
#2. [拒绝,因为会造成大量重复文件]
tar czf --dereference \
/media/masi/ext4Masi/backup_home_20.12.2016.tar.gz $HOME/
#3. ...
使用备份的代码[已弃用;使用tar xzfC ...
]
我认为rsync
这里可能是正确的选择,无需删除,但可以-u
选择跳过目标文件已存在且日期晚于源文件的任何文件
(要求关于几乎);
伪代码因为我认为.tar.gz
不能在那里输入
# http://unix.stackexchange.com/a/287016/16920
rsync -rtvuc --progress \
/media/masi/ext4Masi/backup_home_20.12.2016.tar.gz $HOME/
但是,我仍然不确定
- 关于正确维护文件目录层次结构
- 你怎么能有
.tar.gz
文件作为输入rsync
?
操作系统:Debian 8.5
答案1
rsync
当你可以使用时为什么要参与tar
?
如果您使用以下命令创建备份:
tar czf /media/masi/ext4Masi/backup_home_20.12.2016.tar.gz $HOME/
然后您可以恢复文件而不覆盖现有文件,如下所示:
tar xzfC /media/masi/ext4Masi/backup_home_20.12.2016.tar.gz / --keep-newer-files
tar
各种文档的手册页不要覆盖旗帜。
事实证明,您的备份包含指向已备份树外部的文件的符号链接。如果您不介意丢失符号链接,您可以使用-h
( --deference
) 选项备份期间将它们引用到真实的文件和目录中。另一方面,如果您想保留符号链接及其目标,则需要将这些目标包含在备份中。
示例 1,您很高兴将符号链接转换为真实的文件或目录:
tar czf /path/to/backup.tgz --deference "$HOME"
示例 2,您想要包含符号链接的目标。这假设您的目标位于/bigdisk/myfiles/
:
tar czf /path/to/backup.tgz "$HOME" /bigdisk/myfiles