私はubuntuサーバー12.04を使用していますが、rsyncを使用していくつかのファイルをバックアップしたいので、試してみてください:
rsync -aAX $HOME/Documents/* $HOME/Backups/TEST --exclude={$HOME/Documents/another/*,$HOME/Documents/temp/*}
ご覧のとおり、フォルダー$ HOME/Documents内のすべてのファイルをフォルダー$ HOME /にバックアップしますバックアップ/ TEST、ただしexcludeフォルダー内のファイルanother =およびtemp。しかし、私は失敗しました、rsyncは除外された両方のフォルダのファイルをまだコピーしました:
ls $HOME/Backups/TEST/another
test
testはフォルダー内のファイルですanother、また、rsyncでファイルを除外しているのにコピーされます。なぜですか?これらのファイルを実際に除外するにはどうすればよいですか?
Rsyncコマンドにはいくつかの問題があります(フィルタールールの詳細な説明については rsyncのマンページ も参照してください)。
--exclude
コマンドが必要です。例では、次の構文が機能します。
rsync -avAX --exclude=another/ --exclude=temp/ ~/Documents/ ~/Backups/TEST
除外パターンが/
で終わる場合、ディレクトリを参照することに注意してください。両方を省略すると、その名前のファイルとディレクトリは除外されます。ワイルドカード*
に置き換えて、名前にその文字列が含まれるすべてのファイルまたはディレクトリを除外します。
ソースディレクトリに.rsync-filter
ファイルを追加し、-F
オプションを使用する方が簡単な場合があります。
Manページから:
-F:-Fオプションは、このルールの短縮形[...]です。
--filter='dir-merge /.rsync-filter'
これにより、階層全体に振りかけられたディレクトリごとの.rsync-filterファイルを探し、そのルールを使用して転送中のファイルをフィルタリングするようにrsyncに指示します。
例:$ HOME/Documents/.rsync-filter
# you can add comments in filter files
- /another/
- /temp/
-
の代わりに、Word exclude
全体を記述することもできます。
今、あなたはできる
rsync -aAX -F $HOME/Documents/ $HOME/Backups/TEST/