家庭服务器的最佳Linux备份方法是什么?

我目前使用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_DEVBACKUP_DIRvariables以适应。

我使用dirvish来备份到USB驱动器。 我有几个脚本,用于将活动驱动器安装到文件系统的正确位置,然后运行备份。

Dirvish基本上只是一个perl脚本,它调用rsync有很多选项:

  • 你可以保留许多备份而不浪费空间
  • 你有一个简单的configuration语法
  • 恢复很容易

这个问题的大部分答案也适用于这里。 提到的大多数工具在Linux上都能正常工作。

看看rdiff-backup 。 留在USB驱动器不能伤害。 至less它是便宜的。 他们闲置时不用很多的电力。

正如其他答案build议,使用rsync(和/或rsync周围的包装)是一个简单的方法来做一个Linux服务器的备份。 有些事情要记住:

  • 您关心的应用程序数据实际上是否备份? 如果你有一个数据库,你应该有一个定期转储数据的cron作业。 实时数据库系统的文件的rsync不保证给你一个可靠的备份。
  • 您多久testing一次以查看备份是否正常工作,或者您的USB磁盘状况良好?
  • 在备份时删除文件会发生什么情况? 如果你使用类似rsnapshot的东西,你可能没问题。 但是,如果您使用带有--delete选项的rsync,则可能无法恢复您不想删除的文件。

如果您的主磁盘出现故障,第二个本地磁盘可能是最快捷的方式来恢复文件,但如果您的房屋被雷击(或您的廉价电源条消失),它将无济于事)。 有了这么多$ 5 /月的非现场备份解决scheme,这两个都不是一个坏主意。