我有两台主计算机,一台 Mac Pro 和一台 MacBook Pro,供我外出时使用。我还有一台 Linux 服务器,它也可以用作 NAS。
目前,我使用 Time Machine 将整个计算机备份到外部驱动器,但这个方法毫无用处,而且不同步任何内容。我真正想要做的是让我的重要文件在两台计算机和我的 NAS(运行 RAID 5)之间保持同步,这样我就不会备份容易替换的系统文件,而且我把所有重要文件放在 3 个地方,其中两个运行 RAID,因此至少有 5 个驱动器必须同时崩溃才会发生实际数据丢失。
我想保持同步的文件夹基本上是我的照片、文档、开发、mamp 和工作文件夹,然后我想保持用户库文件夹备份但不同步。我想我必须使用 rsync,但不知道如何使用。
在建议使用 Dropbox 和类似建议之前,我不想使用它们,原因如下:安全性(Dropbox 显然证明了这一点)、速度(有时我会同步 GB 的数据,这在本地会快得多,甚至可能通过 VPN 也是如此,因为我有千兆管道)、空间(我的 NAS 上的空间很便宜,实际上只受我的需求限制)、可靠性(即使我的互联网断线了,我仍然需要能够保持文件同步,以防我需要随时去某个地方)、价格(我已经拥有所有硬件,对于我所需要的 GB 和带宽,我怀疑是否有任何免费或便宜的服务)。这些是我想要将其保留在本地的主要原因。
我为我可能犯的任何拼写或语法错误感到抱歉。我在一辆摇晃的火车上用智能手机写这篇文章,英语不是我的母语。我非常感谢任何答案,即使只能部分解决我的问题。
答案1
答案2
下面是我用来备份 w/rsync 的脚本。不同之处在于,它使用硬链接(节省空间)复制以前的备份,然后 rsync 会将其复制到该备份。
rsync 备份总是让我感到紧张,因为如果源文件损坏并且 rsync 运行,您拥有的单个副本可能会被清除。但使用此方案则不会出现这种情况。
#! /bin/bash
# number of days to keep backups:
maxage=120
lockfile=/tmp/sync-files
# Ensure that only one copy is running.
lockfile -r0 $lockfile || exit 1
trap 'rm -f $lockfile' EXIT
# Versioned rsync
vrsync()
{
[ -d $2 ] || mkdir $2
# remove expired directories
for dir in `find $2 -maxdepth 1 -type d -mtime +$maxage`; do
#echo "NOTE: removing expired directory: $dir"
rm -fr $dir
done
mostrecent=`(cd $2; /bin/ls -r) | grep '^[0-9]' | head -1`
today=`date +%Y.%m.%d-%H:%M:%S`
if [ -z "$mostrecent" ]; then
echo No older mirror to rotate. Starting fresh.
else
#echo most recent is $mostrecent. Making links.
cp -al $2/$mostrecent $2/$today
fi
rsync -qa --delete --delete-before $1 $2/$today
# Note: rsync will set the modification time of the destination
# directory to the modification time of the source directory so we touch
# it here so that it reflects the time of the backup.
touch $2/$today
# make a `latest' link
rm -f $2/latest
ln -s $today $2/latest
}
# trailing slash on first directory is important
vrsync /home/Documents/ /mirror/backup/Documents
答案3
只要单向同步即可,我就会使用 rsync。需要双向同步时,我会使用 Unison。使用此工具同步 GB 级数据、大量源文件等,效果非常好。
我还没有尝试过使用 Unison 同步整个主目录。我不确定如果两台机器共享整个主目录,OS X 是否会崩溃。如果 OS X 支持此功能,我非常有信心 Unison 可以处理负载。
使用 Unison 时的一个提示。使用 ssh 同步,而不是使用 smb 或 nas 安装驱动器。当 Linux 服务器使用 smb 远程安装在 Mac 上时,我遇到了文件权限无法在 Mac 和 Linux 服务器之间正确传播的问题。如果通过 ssh 登录完成相同的同步,则不会出现任何问题。
此外,当使用 ssh 同步时,Unison 实际上可以在 Mac 和 Linux 服务器上运行。这意味着,大多数计算(找出发生了什么变化)都是在每台机器上完全独立进行的(意味着非常非常快)。
答案4
对于命令行备份,本地或通过网络:
- rsync:单向,覆盖目的地,因此错误(例如错误的方向)可能会破坏数据。
- rdiff-backup:单向,但保留与旧版本的差异,以便可以恢复。类似于 TimeMachine。
要保持多台机器同步:
- Unison:双向同步。配置文件选择要同步哪些文件夹。我不直接同步主文件夹,而是同步文档文件夹。对于两台以上的计算机来说不实用。
- Bittorrent 同步:多向同步。允许使用 bittorrent 协议进行私人同步。我使用它来保持我的计算机和同事之间的一些文件夹同步。我更喜欢这个而不是 dropbox,因为后者的空间限制。