除外ファイルを使用して、OS X10.8.4用にrsync
を設定しようとしています。ただし、除外したいパスを認識しません。
ユーザーABC
のホームディレクトリをマウントされた外付けドライブのBackup_Mac
というフォルダにコピーしたいと思います。
rsync -av --progress --exclude-from='/Users/ABC/excludelist.txt' /Users/ABC /Volumes/Backup_Mac
excludelist.txt
には
- /Users/ABC/Dropbox/
Dropboxフォルダを除外するものではありません。
除外ファイルをに変更すると
- Dropbox/
ABC/Dropbox
だけでなく、ファイルツリーの他の場所にあるDropboxという名前の他のすべてのフォルダーも除外されます。これは私が望んでいることではありません。フォルダABC/Dropbox
のみを除外し、Dropbox
と呼ばれる他のフォルダを含めたいと思います。 ABC/Application Support/Dropbox
。
それを達成する方法についてのヒントはありますか?バックアップされたフォルダまたはルートを基準にして、除外パスを指定するにはどうすればよいですか?
簡単に言えば、rsync
は相対パスを使用して何を除外するかを決定します。差出人 rsync
マンページ :
パターンが/で始まる場合は、ファイルの階層内の特定の場所に固定されます。それ以外の場合は、パス名の末尾と照合されます。これは、正規表現の先頭の^に似ています。したがって、「/ foo」は、「転送のルート」(グローバルルールの場合)のいずれかにある「foo」という名前のファイルと一致します(…)
これを回避する最も簡単な方法は、--relative
/-R
を使用することです。これにより、次のようにDropboxを除外できます。
rsync -avR --exclude='/Users/alex/Dropbox' /Users/alex /Volumes/Backup_Mac
relative
という名前は、rsync
がパスを送信する方法を示しているため、絶対除外パターンの指定とは何の関係もありません。
これにより完全なディレクトリツリー/Volumes/Backup_Mac/Users/alex/
が作成されますが、これはあなたの場合はそれほど悪いことではないことに注意してください。