私は2台のプライマリコンピュータを持っています。1台はMacProで、もう1台は外出先で使用するためのMacBookProです。 NASとしても機能するLinuxサーバーもあります。
現在、私はコンピュータ全体をTime Machineを使用して外付けドライブにバックアップしていますが、これはかなり役に立たず、何も同期しません。私が本当にやりたいのは、両方のコンピューターとNAS(RAID 5を実行している)の間で重要なファイルの同期を維持することです。そうすれば、簡単に交換可能なシステムファイルをバックアップすることができず、重要なファイルはすべて、2つがRAIDを実行している3つの場所にあるため、実際のデータ損失が発生する前に、少なくとも5つのドライブを同時にクラッシュさせる必要があります。
同期を維持したいフォルダーは、基本的に写真、ドキュメント、開発、mamp、および作業フォルダーであり、ユーザーライブラリフォルダーをバックアップしたままにしておきたいが、同期はしていません。 rsyncを使わなければならないと思っていますが、方法がわかりません。
Dropboxや同様の提案を提案する前に、いくつかの理由でそれらを使用したくありません。それらのいくつかはセキュリティ(Dropboxは明らかにこれを証明しました)、速度(時にはギガバイトのデータを同期し、ローカルで大幅に高速になり、おそらくギガビットパイプを使用しているため、VPNを介して)、スペース(NASは安価で、ニーズによってのみ実質的に制限されます)、信頼性(インターネットがダウンした場合でも、その場でどこかに行く必要がある場合に備えてファイルの同期を維持できる)、価格(私はすでにすべてのハードウェアを持っており、必要なギガバイトと帯域幅の量については、無料または安価なサービスがあるとは思えません) 。これらは、ローカルに保持したい私の主な理由です。
スペルや文法の間違いをしてすみません。私はこれをスマートフォンで不安定な電車から書いていますが、英語は私の母国語ではありません。私の問題を部分的にしか解決していなくても、どんな答えにも感謝しています。
以下は、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
rsyncはこれを行うことができます
私のアドバイスは、あなたがそれを使う方法を学ぶのに少し時間がかかるということです、それは非常に有能なツールです。
Sourceforge arRsync にプロジェクトがあり、開始に役立つ可能性のあるグラフィカルなフロントエンドを提供します。
一方向の同期が行われるときはいつでもrsyncを使用します。双方向の同期が必要な場合は、Unisonを使用します。このツールを使用して、ギグのデータや大量のソースファイルなどを同期することで素晴らしい結果が得られました。
私が試したことがないのは、Unisonを使用してホームディレクトリ全体を同期することです。ホームディレクトリ全体が2台のマシンで共有されている場合、OSXがクラッシュするかどうかはわかりません。これがOSXでサポートされている場合、Unisonが負荷を処理できると確信しています。
ユニゾンを使用する際のヒントです。ドライブをsmbまたはnasでマウントする代わりに、sync oversshを使用します。 Linuxサーバーがsmbを使用してMacにリモートでマウントされている場合、MacとLinuxサーバー間でファイルのアクセス許可が正しく伝播されないという問題が発生しました。同じ同期がsshログインで実行されても、問題はありません。
また、sync over sshが使用されている場合、Unisonは実際にはMacとLinuxサーバーの両方で実行されます。つまり、何が変更されたかを把握するためのほとんどの計算は、マシンごとに完全に分離して実行されます(つまり、非常に高速です)。
コマンドラインバックアップの場合、ローカルまたはネットワーク経由で:
複数のマシンの同期を維持するには: