
フォルダがあります。
このフォルダのコピーをローカルに1つ、サーバーに1つ持っています。ローカルフォルダを必要に応じて編集し、rsyncそれをサーバーに送信します。
ローカルとリモートの 2 つのコピーを比較し、ローカルではなくリモートにあるファイルのリストを取得する方法はありますか?
答え1
ローカル マシンで実行される次の rsync コマンドは、リモート ホストには存在するがローカル ホストには存在しないファイルを一覧表示します。
rsync -av --dry-run --delete somedir/ user@remote:~/somedir/
この--dry-run
スイッチは、実際には何もせずにファイルを一覧表示するだけです。この--delete
スイッチを (verbose) と組み合わせると、-v
リモート ホストには存在するがローカル ホストには存在しないため削除されるファイルが一覧表示されます。これが目的です。
答え2
Unison ファイル シンクロナイザーrsync アルゴリズムを使用して、まさにそれを実行します。私は毎日これを使用しています。
答え3
rsync を実行するための ssh キーがすでにある場合は、リモート ssh コマンドを発行してディレクトリ内のファイルを一覧表示し、ローカル ディレクトリのコピーと比較することができます。
ssh [email protected] ls -1 ~/foo > /tmp/remote.txt && ls -1 ~/foo > /tmp/local.txt && diff /tmp/remote.txt /tmp/local.txt
追加クレジット、diffの出力をパイプして色差可愛さのために。