$ 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
$ sudo rsync -avPR --no-inc-recursive --delete -e "ssh -p20022" /var/cache/{dnf,libdnf5} root@wicked-beat:/
building file list ...
1444 files to consider
/var/cache/libdnf5/updates-e19adde8fd271134/packages/
/var/cache/libdnf5/updates-e19adde8fd271134/packages/amd-gpu-firmware-20250410-1.fc41.noarch.rpm
26,173,116 100% 383.94MB/s 0:00:00 (xfr#1, to-chk=775/1444)
/var/cache/libdnf5/updates-e19adde8fd271134/packages/amd-ucode-firmware-20250311-1.fc41.noarch.rpm
356,123 100% 4.30MB/s 0:00:00 (xfr#2, to-chk=774/1444)
/var/cache/libdnf5/updates-e19adde8fd271134/packages/amd-ucode-firmware-20250410-1.fc41.noarch.rpm
357,604 100% 2.82MB/s 0:00:00 (xfr#3, to-chk=773/1444)
/var/cache/libdnf5/updates-e19adde8fd271134/packages/android-tools-35.0.2-2.fc41.x86_64.rpm
2,124,004 100% 2.05MB/s 0:00:00 (xfr#4, to-chk=772/1444)
...
$ sudo rsync -avRP --no-inc-recursive --delete -e "ssh -p20022" /var/cache/./{dnf,libdnf5} root@wicked-beat://var/cache/
building file list ...
1442 files to consider
libdnf5/updates-e19adde8fd271134/packages/
libdnf5/updates-e19adde8fd271134/packages/appstream-data-41-11.fc41.noarch.rpm
16,048,246 100% 3.86MB/s 0:00:03 (xfr#1, to-chk=769/1442)
libdnf5/updates-e19adde8fd271134/packages/arm-none-eabi-gcc-cs-14.1.0-4.fc41.x86_64.rpm
281,265,139 100% 2.22MB/s 0:02:00 (xfr#2, to-chk=768/1442)
libdnf5/updates-e19adde8fd271134/packages/at-spi2-atk-2.54.1-1.fc41.i686.rpm
95,484 100% 825.19kB/s 0:00:00 (xfr#3, to-chk=767/1442)
libdnf5/updates-e19adde8fd271134/packages/at-spi2-atk-2.54.1-1.fc41.x86_64.rpm
88,221 100% 700.43kB/s 0:00:00 (xfr#4, to-chk=766/1442)
...
-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