web-dev-qa-db-ja.com

リモートディレクトリへのrsync

ホームディレクトリをバックアップコンピュータに更新しようとしました

rsync -avru --exclude-from='/home/me/exclude-me.txt' /home/me/* [email protected]:/home/assistant/* -p 2222

エラーが出ます

Unexpected remote arg: [email protected]:
rsync error: syntax or usage error (code 1) at main.c(1361) [sender=3.1.2]

コードの何が問題になっていますか?

2
Alice

rsyncの場合-pオプションは権限を保持するを意味し、引数を取りません。したがって、コマンドを正しく解析できず、エラーが発生します。

rsyncが接続するSSHポートを変更する場合は、次のコマンドを使用します。

rsync -avru --exclude-from='/home/me/exclude-me.txt' -e 'ssh -p 2222' \ 
/home/me/ \
[email protected]:/home/assistant/
6
Thomas

ターゲットにはワイルドカードを含めないでください。必要に応じて、末尾の/を使用するかどうかを学ぶのが最善です。

 -rsyncの-pは、ポートではなく権限です。マンページから:
 -p、-permsは権限を保持します

rsyncは、少なくとも10年間、デフォルトでリモート接続にsshを使用しています。 -eを指定する必要はありません。ポートはURLに追加できます-userid @ remote-server:port/path/to/target /。ユーザーIDがソース・マシンと同じである場合、それは必要ありません。

Sshはデフォルトで使用されるため、〜/ .ssh/configファイルを使用して代替ポート、異なるユーザーID、または異なるキーなどの非標準設定を処理すると、rsyncコマンドがより簡単になります。 DNS名が醜い場合やIPのみが可能な場合にも、名前を使用するのに便利です。設定ファイルは、アカウント、ログイン、および非標準ポートを使用するすべての外部システムを便利に文書化するのに適した方法です。

  rsyncがリモートシステムに接続する方法は2つあります。
リモートシェルプログラムをトランスポート(sshやrshなど)として使用する方法と、
 TCPを介してrsyncデーモンに直接接続する方法です。リモートシェルのtransâ
ポートは、ソースまたは宛先パスにホスト指定の後に単一の
コロン(:)区切り文字が含まれる場合に常に使用されます。 

しかし、これはrsync-fuよりもssh-fuに関するものです。

Rsyncのマンページは非常に包括的です。多くの人々は、explainhell.comがrsyncやfindなどの複雑なコマンドに役立つことを理解しています。元のコマンドをExplainシェルに接続すると、-pが問題として飛び出します。

したがって、上記の簡略化の後(特に〜/ .ssh/configファイルを使用すると)、コマンドは次のようになります。

 $ rsync -avru --exclude-from = '/ home/me/exclude-me.txt'〜/ * [email protected]:2222/home/assistant / 

私はユーザーID、非友好的なホスト名、ポートを設定に入れて、このようにします:

 $ rsync -avz --exclude-from = '/ home/me/exclude-me.txt'〜/ backsrv:

〜/ *または/ home/me/*は、構成ファイルや〜/ .config /ディレクトリーなど、ピリオドで始まるものをすべて欠落します。これらが必要で、必要な場合は、特定の正規表現が必要ですOR正規表現パターンのないソースとして/ home/meを使用するだけです。上記を参照してください。ターゲット上のディレクトリ?デフォルトでは、ユーザーIDのHOMEが使用されます--dry-runオプションを忘れないでください:

 -n、-dry-run 
変更なしで試運転を実行します

目標が毎日のバックアップである場合、おそらくバージョン管理されたバックアップを備えたツールを使用することは理にかなっていますか?

1
JohnP