WEBEER – Web制作の覚えがき –

rcyncで特定のファイルだけを同期・除外する方法

ターミナル
ターミナル 更新日:2020.08.16 公開日:2020.08.16

rcyncするときにフォルダ内の特定のフォルダだけ同期や除外したい時ってありますよね。

rcyncではホワイトリストとブラックリストの方式でファイルやフォルダを指定することができます。

特定のファイルを除外する(ブラックリスト)

特定のファイルやフォルダを除外するには--excludeで除外することができる。

rsync -auvz -e "ssh -p 10022 -i ~/.ssh/id_xserver_rsa" --exclude="example.txt" -rlpt ./ user@server.xserver.jp:example.com/public_html

特定のファイルだけ同期する(ホワイトリスト)

特定のファイルやフォルダだけ同期するには--includeで指定することができる。

rsync -auvz -e "ssh -p 10022 -i ~/.ssh/id_xserver_rsa" --include="example.txt" -rlpt ./ user@server.xserver.jp:example.com/public_html

まとめて除外した中で特定のファイルだけ同期する

outputフォルダは除外したいんだけど、その中のexampleフォルダ内だけは許可したいんだよね、みたいな場合は外部ファイルで書く。

許可した後に除外する順番で書くこと。

+ output/example //許可したいフォルダ
- output/*  //まとめて除外したいフォルダ

これはincludeでいいんじゃないかなと思うけど、以前なにかの時に使った記憶があるのでメモ。

外部ファイルで書く方法

外部ファイルで同期/除外するファイルを指定する時は--exclude-fromを使う。

// 除外する
rsync -auvz -e "ssh -p 10022 -i ~/.ssh/id_xserver_rsa" --exclude-from=exclude.txt -rlpt ./ user@server.xserver.jp:example.com/public_html

// 同期する
rsync -auvz -e "ssh -p 10022 -i ~/.ssh/id_xserver_rsa" --exclude-from=exclude.txt -rlpt ./ user@server.xserver.jp:example.com/public_html
テストの時は–dry-runをつけましょう