そのため、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つだけです。ControlMaster
SSH設定ドキュメントで追加ログインを参照してください。