4

rsyncでファイルをバックアップするbashスクリプトを作成しています。

バックアップはすべて単一のディレクトリから取得されます。新しいファイルまたは変更されたファイルのみをバックアップしたい。

現在、私はrsyncにディレクトリをバックアップし、最後のバックアップと比較してファイルをチェックするように指示しています。

私がこれをしている方法は

THE_TIME=`date "+%Y-%m-%dT%H:%M:%S"`
rsync -aP --link-dest=/Backup/Current /usr/home/user/backup /Backup/Backup-$THE_TIME
rm -f /Backup/Current
ln -s /Backup/Backup-$THE_TIME /Backup/Current

私はこれに対して正しい構文を持っていると確信しています。各バックアップは「現在の」フォルダと照合し、必要な場合にのみアップロードします。次に、現在のフォルダを削除し、実行した最新のバックアップへのシンボリックリンクを再作成します。

スクリプトを実行するとエラーが発生します。

rsync: link "/Backup/Backup-2010-08-04-12:21:15/dgs1200series_manual_310.pdf"

=> /Backup/Current/dgs1200series_manual_310.pdfが失敗しました:操作はサポートされていません(45)

ホストOSは、ハードリンクをサポートするHFSファイルシステムを実行しています。他の何かがこれをサポートしていないのか、またはコードに問題があるのか​​を把握しようとしています。

助けてくれてありがとう

編集:

ローカルマシンでハードリンクを作成できます。リモートサーバーにハードリンクを作成することもできます(ローカルにログインしている場合)。afpを介してマウントした場合、リモートサーバーにハードリンクを作成できません。サーバー上に両方のファイルが存在する場合でも。

これはafpの制限だと思います。

4

3 に答える 3

3

コマンドラインが単なる例である場合に備えて、必ず絶対パス名を使用してlink-destディレクトリを指定してください。それは私が理解するのにかなりの時間がかかったものです…</p>

于 2010-10-01T12:57:21.080 に答える
1

マニュアルページの2つの点で、確認する価値があります。

ファイルがリンクされていない場合は、それらの属性を再確認してください。また、rootを単一のユーザーに押し付けるマウントオプションや、一般的な所有権を持つリムーバブルドライブをマウントするマウントオプション(OS Xの「このボリュームの所有権を無視する」オプションなど)など、一部の属性がrsyncの制御外に強制されていないかどうかを確認します。

2.6.1より前のバージョンのrsyncには、-oが指定されている(または-aによって暗示されている)場合に、非スーパーユーザーに対して--link-destが正しく機能しない可能性があるバグがあったことに注意してください。古いrsyncに送信するときに-oオプションを回避することで、このバグを回避できます。

「所有権を無視する」オプションがオンになっていますか?どのバージョンをrsyncお持ちですか?

lnまた、コマンドラインを使用して同様のハードリンクを手動で作成しようとしましたか?

于 2010-08-04T16:49:25.603 に答える
1

これが同じ問題であるかどうかはわかりませんが、宛先がFAT32パーティションであり、ファイル名に「:」(コロン)が含まれている場合、rsyncはファイルを同期できないことを知っています。[ソースファイルシステムはext3で、宛先はFAT32です]

dateコロンを使用しないようにコマンドを再構成してみて、それが違いを生むかどうかを確認してください。

例えば

THE_TIME=`date "+%Y-%m-%dT%H_%_%S"`
于 2010-08-05T04:47:18.500 に答える