$ rsync -avP --delete --copy-links /home/samba/source /mnt/backup/
-a
元のパーミッションやグループなどを保持したまま同期\\
-v
処理中のファイル名を表示\\
-P
進行状況を表示\\
--delete
コピー元で削除されたファイルは、コピー先でも削除\\
--copy-links
シンボルリンク先のファイルをコピー\\
-z
データを圧縮する(ローカルコピーでは速度が低下するので指定しない)\\
選ばれて10年。エンジニアの気持ちが分かる転職エージェントは【アイムファクトリー】
$ rsync -avz --delete -e ssh ローカルディレクトリ ユーザ@リモートサーバ:転送先フォルダ
-a
元のパーミッションやグループなどを保持したまま同期\\
-v
処理中のファイル名を表示\\
-z
データを圧縮する(回線が遅い場合などに使用)\\
--delete
コピー元で削除されたファイルは、コピー先でも削除\\
-e ssh
リモートシェルを指定\\
自社で腰を落ち着けて仕事がしたい方は【社内SE転職ナビ】へ
$ rsync -avz --delete -e ssh ユーザ@リモートサーバ:バックアップ元ディレクトリ ローカルバックアップ先ディレクトリ
"ssh -p<port>"
のようにダブルクォーテーションで囲って指定する🤔\\
$ rsync -avz --delete -e "ssh -p10022" ユーザ@リモートサーバ:バックアップ元ディレクトリ ローカルバックアップ先ディレクトリ
$ rsync -avz --delete -e ssh username@remote.server.com:/remote/server/directory/ /local/client/directory/20081016
username@remote.server.com's password: receiving file list ... done ./ log/ log/geeklog.tomoyan.net.1.log log/geeklog.tomoyan.net.2.log log/geeklog.tomoyan.net.3.log ... sent 2594 bytes received 403518 bytes 14767.71 bytes/sec total size is 140703092 speedup is 346.46
$ rsync -avz --delete -e ssh username@remote.server.com:/remote/server/directory/ /local/client/directory/20081016
/remote/server/directory/
のように、元ディレクトリの最後に "/
" を付けると、directory
の内容が 20081016
内に展開されるかたちで同期される🤔\\
\\
先ディレクトリに元ディレクトリ名のディレクトリが作成される例:
$ rsync -avz --delete -e ssh username@remote.server.com:/remote/server/directory /local/client/directory/20081016
/remote/server/directory
のように、元ディレクトリの最後に "/
" を付けないと、20081016
内に directory
が作成されてその中に同期される🤔\\
===== rsync でレジューム同期を行うには? =====
$ rsync -avzP --delete -e ssh user@remote.srv.com:/remote/server/directory/ /local/client/directory/20150804
-P
--partial --progressと同じ
===== rsync 進行状況を正確に知る =====
-P
または --progress
で ir-chk=3604/--no-inc-recursive
オプションを使うと、最初に全ての処理対象をカウントしてから to-chk=3019/196542 のように実行状況の分母が変動しないので、__完了までの正確な進行状況が分かりやすい__😍\\
$ rsync -avzP --delete --no-inc-recursive -e ssh user@remote.srv.com:/remote/server/directory/ /local/client/directory/20150804
$ sudo rsync -rtlzvogpHAXP --delete --exclude /dev/ --exclude /proc/ --exclude /sys/ --exclude /var/run/ --exclude /var/lock/ --exclude ifcfg* --exclude ssh_host_* --exclude fstab --block-size=4096 -e "ssh -p12345" / skv0001:/
--exclude [パターン]
パターンに一致するものを除外する🤔\\
[[.rsync:fedora_vps_duplicate|Fedora VPS サーバーを rsync で複製する😍]] のような場合に活躍するオプション😉\\
==== 除外パターンを bash braces '{}' で効率よく書く✍😍 ====
''%%--%%exclude data/log'' ではなく ''%%--%%exclude=data/log'' で書く必要がある🤔\\
''%%--%%exclude\ data/log'' スペースをバックスラッシュでエスケープすると、bash はブレース展開をシングルクオートで囲むので rsync で **rsync error: syntax or usage error** になるからである🤔\\
$ rsync -avzP --delete \ --exclude={data/log,lib/plugins/codemirror,lib/tpl/tomoyannet,lib/tpl/tomoyannet_lite} \ --exclude=data/cache/{{0..9},{a..f}} \ -e ssh \ skv0001://var/www/vhosts/www.tomoyan.net/dokuwiki/ \ ~/my_projects/tomoyan.net/sites/tomoyan.net/dokuwiki
+ rsync -avzP --delete \ --exclude=data/log --exclude=lib/plugins/codemirror --exclude=lib/tpl/tomoyannet --exclude==lib/tpl/tomoyannet_lite \ --exclude==data/cache/0 --exclude=data/cache/1 --exclude=data/cache/2 --exclude=data/cache/3 --exclude=data/cache/4 --exclude=data/cache/5 --exclude=data/cache/6 --exclude=data/cache/7 --exclude=data/cache/8 --exclude=data/cache/9 --exclude=data/cache/a --exclude=data/cache/b --exclude=data/cache/c --exclude=data/cache/d --exclude=data/cache/e --exclude=data/cache/f \ -e ssh \ skv0001://var/www/vhosts/www.tomoyan.net/dokuwiki/ \ /home/tomoyan/my_projects/tomoyan.net/sites/tomoyan.net/dokuwiki
-v
オプションは --verbose
なので...🤔\\
-v
処理中のファイル名を表示\\
-vv
スキップされたファイル名も表示\\
-vvv
デバッグレベルの処理詳細を表示\\
$ rsync -avvvzP --delete --no-inc-recursive -e ssh user@remote.srv.com:/remote/server/directory/ /local/client/directory/20150804
rsync: failed to set times on "/var/www/html/.": Operation not permitted (1)
$ sudo rsync -avz --delete -e ssh user@remote.server.com:/remote/server/directory/ /local/client/directory/
$ mkdir -p /var/www/html/
$ rsync -avz --delete -e /var/www/vhosts/ '/mnt/win_c-drv/Program Files (x86)/Ampps/www/vhosts/'
sending incremental file list drwxrwxrwx 0 2019/09/13 05:48:31 . sent 48 bytes received 64 bytes 224.00 bytes/sec total size is 0 speedup is 0.00
-a
オプションは **-rlptgoD** を指定した事になる。\\
-v
オプションは **verbose (詳細表示)**\\
-z
オプションは **転送時に圧縮**\\
-e
オプションは **"ssh -p10022" SSH でポートを指定する**\\
この場合マウントした NTFS なので **-e** オプションは不要である。(単純にコマンドオプションのミス😅)\\
\\
$ rsync -avz --delete /var/www/vhosts/ '/mnt/win_c-drv/Program Files (x86)/Ampps/www/vhosts/'
〜省略〜 sent 1,243,360,982 bytes received 891,926 bytes 8,378,807.46 bytes/sec total size is 1,626,537,962 speedup is 1.31
$ rsync -rlptvz --delete /var/www/vhosts/ '/mnt/win_c-drv/Program Files (x86)/Ampps/www/vhosts/'
〜省略〜 sent 1,243,360,982 bytes received 891,926 bytes 8,378,807.46 bytes/sec total size is 1,626,537,962 speedup is 1.31