リモートマシンのファイルをrsyncでバックアップする例

前提

  • リモートマシン名: remote
  • ユーザ名:foo(リモート、ロカールとも)
  • ローカルでssh-agentを使用。リモートマシンにはパスフレーズ入力なしでsshログイン可能にしておく(rsyncはデフォルトでリモート接続にsshを使用するため)
  • リモートもローカルも、rsyncをパスワードなしでsudo可能にしておく (ローカル側はパスワードの手入力可能かもしれないが未検証)

リモートマシンで自分が所有するホームディレクトリ上のworkディレクトリ以下をローカルのwork.backupにバックアップ

rsync -avzPi remote:work/ work.backup
引数の概要
  • a: パーミッション、所有者、タイムスタンプなどの属性を維持
  • v: 詳細メッセージ表示
  • z: データを圧縮(ネットワークが広帯域の場合、付与しないほうが良いケースあり)
  • P: 進捗を表示
  • i: 更新されている属性を表示

リモートのroot権限でのみ読み取り可能な/eggplantディレクトリ以下をローカルの/eggplant.backupにバックアップ

sudo -E rsync --rsync-path="sudo rsync" -avzPi foo@remote:/eggplant/ /eggplant.backup
  • 最初のsudoは、ローカルでrootのみが書き込み可能なディレクトリ/eggplant.backup以下にバックアップするため。またファイルの所有者が自ユーザ以外の場合、そのユーザに変更するためにも必要
  • sudoの引数-Eは、ssh-agentをsudoしたあとも有効にする(sshコマンドは、通信すべきssh-agentプロセスを環境変数から知るため)
  • --rsync-path="sudo rsync"は、リモート側のrsyncをroot権限で起動する。リモート側で所有者がrootであっても、fooユーザで読み取り可能な場合は不要

0 件のコメント: