とりあえす今回採る方法は
リモートのルートファイルシステムをまるっと ローカルのバックアップディレクトリにコピーする。
rsyncコマンドはローカル側から実行する。
ローカル準備
ローカルのrootユーザーが、引数なしでリモートにsshでログインできるようにしておく。
rsyncコマンドのオプションは長くなるので、できるだけ引数に書く量を減らす
SSH_CONFIG (5)
# cat .ssh/config Host piyo HostName 192.168.1.102 User piyopiyo Port 8228 IdentityFile ~/.ssh/id_rsa_piyo
# ssh piyo ls # scp piyo:test.txt . # rsync piyo:test.txt .
リモートマシン準備
rsyncコマンドをsudo可能にする
Defaults !requiretty piyopiyo ALL=(root) NOPASSWD: ALL
ALLはちょっとひどいので /usr/bin/rsync などとしておくと良い
コピー
リモートサーバでrsync+sudoでログインユーザに権限のないフォルダを同期させる | 俺的備忘録 〜なんかいろいろ〜
rsync(1) - Linux man page
リモートの / をまるっと ローカルの backup/ にコピーする。
リモート、ローカルどちらも rsync をsudoで動かすのがコツ
$ sudo rsync -axv --rsync-path="sudo rsync" piyo:/ backup/
-a | ファイルの所有者とかパーミッションとかを保持する |
-x | ファイルシステムをまたがない。 /devとか/procとか用 |
-v | コピーしてるファイル名を表示 |
--rsync-path="sudo rsync" | リモート側で実行するrsyncコマンドをsudo経由にする |