如何使用 Linux NAS(rsync?)保持两台 Mac 之间的文件夹同步和备份

如何使用 Linux NAS(rsync?)保持两台 Mac 之间的文件夹同步和备份

我有两台主计算机,一台 Mac Pro 和一台 MacBook Pro,供我外出时使用。我还有一台 Linux 服务器,它也可以用作 NAS。

目前,我使用 Time Machine 将整个计算机备份到外部驱动器,但这个方法毫无用处,而且不同步任何内容。我真正想要做的是让我的重要文件在两台计算机和我的 NAS(运行 RAID 5)之间保持同步,这样我就不会备份容易替换的系统文件,而且我把所有重要文件放在 3 个地方,其中两个运行 RAID,因此至少有 5 个驱动器必须同时崩溃才会发生实际数据丢失。

我想保持同步的文件夹基本上是我的照片、文档、开发、mamp 和工作文件夹,然后我想保持用户库文件夹备份但不同步。我想我必须使用 rsync,但不知道如何使用。

在建议使用 Dropbox 和类似建议之前,我不想使用它们,原因如下:安全性(Dropbox 显然证明了这一点)、速度(有时我会同步 GB 的数据,这在本地会快得多,甚至可能通过 VPN 也是如此,因为我有千兆管道)、空间(我的 NAS 上的空间很便宜,实际上只受我的需求限制)、可靠性(即使我的互联网断线了,我仍然需要能够保持文件同步,以防我需要随时去某个地方)、价格(我已经拥有所有硬件,对于我所需要的 GB 和带宽,我怀疑是否有任何免费或便宜的服务)。这些是我想要将其保留在本地的主要原因。

我为我可能犯的任何拼写或语法错误感到抱歉。我在一辆摇晃的火车上用智能手机写这篇文章,英语不是我的母语。我非常感谢任何答案,即使只能部分解决我的问题。

答案1

rsync 可以做到这一点

我的建议是,你花点时间学习如何使用它,它是一个非常有用的工具。

sourceforge 上有一个项目同步它为您提供了一个可以帮助您入门的图形前端。

答案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,因为后者的空间限制。

相关内容