何度もログインしなくても、rsyncを使用して別のディレクトリにあるファイルのリストをリモートサーバーに移動できますか?

何度もログインしなくても、rsyncを使用して別のディレクトリにあるファイルのリストをリモートサーバーに移動できますか?

そのため、SSHファイルサーバーを使用してさまざまな構成ファイルをバックアップするスクリプトを作成しようとしている最善の方法がわかりません。両方のシステムの絶対ファイルパスでファイルを入力し、並列処理または他の手段を使用して直接実行できる場合は良いでしょう。Parallelには単一のディレクトリ用のスクリプトがあります。しかし、いくつかの場所に拡張したいと思います。

たとえば、

/home/$USER/.bashrc --> remoteuser@remoteIP:/home/remoteuser/backup/.bashrc
/home/$USER/.config/i3/config --> remoteuser@remoteIP:/home/remoteuser/backup/.config/i3/config

ファイル数が多い場合は、サーバーに実際に最新のコピーがある場合は、反対方向に作業してください。

remoteuser@remoteIP:/home/remoteuser/backup/.bashrc --> /home/$USER/.bashrc

これら2つのコマンドを使用してファイルに対してこれを効果的に実行できますが、2回ログインする必要があります。

rsync -vrut -e 'ssh -p portnumber' /home/$USER/.bashrc remoteuser@remoteIP:/home/remoteuser/backup/.bashrc

rsync -vrut -e 'ssh -p portnumber' remoteuser@remoteIP:/home/remoteuser/backup/.bashrc /home/$USER/.bashrc 

ベストアンサー1

最初のケースでは、rsyncは複数のソースオペランドを受け入れ、-R/オプションは--relativeパスを保持しますだから、

rsync -R backup/.bashrc backup/.config/i3/config dest:/home/remoteuser

解決するのに役立ちます。--no-implied-dirsこのオプションは、構造がより複雑な場合に共有パスをスキップするために使用できます。

-R, --relative              use relative path names
    --no-implied-dirs       don't send implied dirs with --relative

反対方向の場合は、複数のリモートソースで同じことを行うことができ、rsyncは同じサーバーに別々に接続しないほどスマートでなければなりません。

-Lオプションと単一のソースを使用して、必要なファイルのみを含むシンボリックリンクでいっぱいの偽のディレクトリ構造を作成することがよくあります。

一方、いつも方向性:単一のコマンドを使用して両方の最新バージョンを取得できないため、2つのコマンドが必要です。共有SSH制御ソケットを使用して同じSSH接続を介して実行できるため、実際のログインは1つだけです。ControlMasterSSH設定ドキュメントで追加ログインを参照してください。

おすすめ記事