我有一个 Linux(Ubuntu 12.04)网络服务器,我想创建一个 cronjob 来在本地(在同一台机器上)生成差异备份。
这可能吗?我说的差异是指第一次复制所有内容,但接下来的几次只复制新文件。但我还想拥有多个时间点,我的意思是至少有 3 或 4 个备份,我可以从中恢复所有内容。
我已经检查过这个页面,但是有太多不同的工具,我想每个工具都有自己的陷阱:https://help.ubuntu.com/community/BackupYourSystem#Types_of_Backup
例如,有人告诉我存储 .tar.gz 的大小是有限制的。
如果您有任何简单的建议,即使不是有区别的,我们也欢迎。
答案1
假设有一个备份磁盘/media/mydisk
并且我想要备份/home/user
,这个小脚本将让你保留 10 个历史备份,但只保留多次不同的文件。
这需要备份磁盘使用 POSIX 文件系统格式化,如 Ext4、XFS 或其他,但不NTFS,也不胖的!
#!/bin/bash
backRepo=/media/mydisk
backSrce=/home/user
backDest=home
backCopy=copy
backCount=9
[ -d "$backRepo/$backDest" ] || mkdir "$backRepo/$backDest"
cd $backSrce || exit 1
rsync -ax --delete --exclude '*~' --exclude '.DStore' . "$backRepo/$backDest/."
cd $backRepo
[ -d "$backCopy.$backCount" ] && rm -fR "$backCopy.$backCount"
for ((i=$backCount;i--;));do
[ -d "$backCopy.$i" ] && mv "$backCopy.$i" "$backCopy.$((i+1))"
done
((i++))
cp -al $backDest $backCopy.$i
这 ( cp -al
) 会创建文件的硬链接,而不是复制它。因此不会占用更多空间。
Rsync 将重新创造(写时复制)每个修改过的文件,因此轮换备份保留旧版本。
答案2
同步是一款出色的文件复制工具,它可以只复制文件中的更改位,并且可以在覆盖之前备份目标文件。
您可以轻松编辑您的文件,crontab
使其定期运行,rsync
作为主备份。然后,您可以复制已更改文件的备份,这样您就会拥有更多时间点。或者,您可以在运行之前复制备份数据,rsync
以便获得每个时间点的完整映像。
除非您稍后要将文件复制到其他地方,否则我认为没有必要使用tar
。