我目前使用rsync和本地USB驱动器来备份我的Fedora Linux服务器。 到目前为止,这似乎符合我的需要,但我怀疑有更好的方法来解决这个问题。 很久以前,我曾经使用过磁带,但现在我的服务器备份磁带备份的尺寸已经超出我的价格范围。 自动化会更好。 尽pipe我想我可以自动化我当前的rsync备份,但这意味着我们一直在使用USB驱动器。
思考?
我用这个解决schemefind一个不介意在他们家里托pipe一个小型无风扇服务器的朋友。 然后我有一个自动化的rsync脚本运行一整夜,以同步我的数据到远程位置。
我把我的服务器备份到亚马逊S3。 我每个季度做一次完整备份,每晚进行一次增量备份。 工作得很好。
我使用使用rsync的rsnapshot ,并确实增量/完整备份。
我写了一个shell脚本,我从一个cron作业运行来挂载磁盘,运行rsnapshot,然后卸载磁盘,所以它一直没有挂载。
这里是我使用的脚本。 第一个是/usr/local/sbin/backup.sh,它基本上是一个包含脚本的包装器,它捕获输出和退出状态,然后将结果通过电子邮件发送给root:
#!/bin/sh # # Run the dobackup script, capturing the output and then mail it to the # backup alias person with the right subject line. # BACKUP_TYPE=daily if [ "a$1" != "a" ] ; then BACKUP_TYPE=$1 fi /usr/local/sbin/dobackup.sh ${BACKUP_TYPE} < /dev/null > /tmp/backup.txt 2>&1 RET=$? SUBJECT="${BACKUP_TYPE} backup for $(hostname) (ERRORS)" if [ "a$RET" = "a0" ] ; then SUBJECT="${BACKUP_TYPE} backup for $(hostname) (successful)" elif [ "a$RET" = "a2" ] ; then SUBJECT="${BACKUP_TYPE} backup for $(hostname) (WARNINGS)" fi mail -s "$SUBJECT" root < /tmp/backup.txt exit $RET
这里是/usr/local/sbin/dobackup.sh,这是真正的主力:
#!/bin/sh # # Perform the backup, returning the following return codes: # # 0 - backup successful # 1 - errors # 2 - backup successful, but with warnings. # if [ -e /dev/sdb1 ] ; then BACKUP_DEV=/dev/sdb1 else echo "No backup device available." echo "CANNOT CONTINUE WITH BACKUP." exit 1 fi BACKUP_DIR=/mnt/backup BACKUP_TYPE=daily if [ "a$1" != "a" ] ; then BACKUP_TYPE=$1 fi echo "Performing ${BACKUP_TYPE} backup." umount $BACKUP_DEV 2> /dev/null mount $BACKUP_DEV $BACKUP_DIR if [ "a$?" != "a0" ] ; then echo "Error occurred trying to mount the external drive with the following command:" echo " mount $BACKUP_DEV $BACKUP_DIR" echo "CANNOT CONTINUE WITH BACKUP." exit 1 fi date rsnapshot $BACKUP_TYPE RET=$? date if [ "a$RET" = "a0" ] ; then echo "Snapshot performed successfully." elif [ "a$RET" = "a2" ] ; then echo "Snapshot performed, but with warnings." else echo "Snapshot had errors (returned ${RET})." fi umount $BACKUP_DIR if [ "a$?" != "a0" ] ; then echo "Error occurred trying to unmount the external drive with the following command:" echo " umount $BACKUP_DIR" exit 1 fi exit $RET
修改BACKUP_DEV和BACKUP_DIRvariables以适应。
我使用dirvish来备份到USB驱动器。 我有几个脚本,用于将活动驱动器安装到文件系统的正确位置,然后运行备份。
Dirvish基本上只是一个perl脚本,它调用rsync有很多选项:
这个问题的大部分答案也适用于这里。 提到的大多数工具在Linux上都能正常工作。
看看rdiff-backup 。 留在USB驱动器不能伤害。 至less它是便宜的。 他们闲置时不用很多的电力。
正如其他答案build议,使用rsync(和/或rsync周围的包装)是一个简单的方法来做一个Linux服务器的备份。 有些事情要记住:
--delete选项的rsync,则可能无法恢复您不想删除的文件。 如果您的主磁盘出现故障,第二个本地磁盘可能是最快捷的方式来恢复文件,但如果您的房屋被雷击(或您的廉价电源条消失),它将无济于事)。 有了这么多$ 5 /月的非现场备份解决scheme,这两个都不是一个坏主意。