見出し | Linux
rsync
sparseオプションを調べる。
使用例
$ man rsync
rsync [OPTION]... SRC [SRC]... DEST
同一ディレクトリがSRCとDESTに存在する。
sampleディレクトリを例にする。
ディレクトリ構造は以下のとおり。
/var/www/html
|
|-- sample
カレントディレクトリの/var/www/html/sampleディレクトリの内容をリモートの/home/example/sampleディレクトリにコピー。
# 例1 推奨
$ cd /var/www/html
$ rsync -ahv sample/ example.com:/home/example/sample/
// rsync -ahv sample/ example.com:/home/example/sample も同じ挙動だが↑で統一
# 例2 非推奨
# この場合 sampleディレクトリのなかの`.`で始まるファイル(.envなど)がコピーされないことに注意する
# この方法は分かりづらいので避ける
$ cd /var/www/html
$ rsync -ahv sample/* example.com:/home/example/sample/
# 例3 非推奨
# この場合は /home/example/sampleディレクトリの中にsampleディレクトリが作成される
# この方法は分かりづらいのでなるべく避ける
$ cd /var/www/html
$ rsync -ahv sample example.com:/home/example/sample/
以下の方法でも例1と同じ結果になる。 この方法でも良い。
# 例4 推奨
# 例3 非推奨とはコピー先のディレクトリ階層がことなることに注意
$ cd /var/www/html
$ rsync -ahv sample example.com:/home/example/
// $ rsync -ahv sample example.com:/home/example でも同じ挙動だが↑で統一
$ rsync -ahv sample example.com:/home/example/sampleだと/home/example/sampleのなかにsampleディレクトリを作成する(/home/example/sample/sampleが作成される)- つまりSRCのスラッシュあり、なしで挙動がことなることに注意。
*ありの場合は.で始まるファイルを同期しない
ref. https://qiita.com/shnagai/items/7403411b4aa193d0fa0d
オプション
-a を指定することでなるべくコピー元のファイルと同一条件でコピーする。
-h でファイルサイズの視認性をよくする。
-v で詳細を出力する。
-n または –dry-run で対象ファイルを確認する。
–max-size で転送対象のファイルサイズの上限を指定できる。
-z –compress データ転送時に圧縮
ref. https://qiita.com/bezeklik/items/22e791df7187958d76c1
-u コピー元とコピー先を比較し、追加・更新されたファイル・ディレクトリのみをコピーします。
ref. https://webkaru.net/linux/rsync-command/
秘密鍵の指定
i オプションはない(SSH は i オプションで秘密鍵を指定できるが rysnc はできない)。
秘密鍵を指定するには以下のように記載する。
$ cd /var/www/html
$ rsync -e 'ssh -i /path/to/private_key' -ahv sample/ ubuntu@example.com:/home/example/sample/
// 同様にポート番号の指定も以下のようにする
$ rsync -e 'ssh -p -i ' -ahv sample/ ubuntu@example.com:/home/example/sample/
除外
--exclude:--exclude={'dir/','file.txt'}という形式で複数指定可能--exclude-from: 除外リストを保存したファイルを指定
除外リストの記載方法がtarとは異なることに注意する。
var/cache/
var/log/
var/sessions/
.git/
末尾に / をつけると、対象がフォルダーのときのみマッチする。
ref. http://tech.nitoyon.com/ja/blog/2013/03/26/rsync-include-exclude/?utm_source=pocket_mylist
# 例4 の形式で特定ディレクトリを除外
$ rsync -ahv --exclude-from='excludes.txt' sample esample.com:/home/example/