とりあえす今回採る方法は
リモートのルートファイルシステムをまるっと ローカルのバックアップディレクトリにコピーする。
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経由にする |