リモートコンピュータのすべてのcsvファイルをローカルコンピュータに同期する

リモートコンピュータのすべてのcsvファイルをローカルコンピュータに同期する

多くのサーバーがありますデータセット定期的に更新されるファイル、/home/peter/data/*.csv

私のローカルファイルをリモコンと同期させたいです。私のSSH設定で正しいユーザー名とホストを設定しました。

私は現在以下を試しましたscp

rsync -e "ssh remote" -v --include='~/dat/*.csv'--include='*/' --exclude='*' . .

これはうまくいきません。私は得る:

skipping directory .

更新されたファイルはありません。

答え1

rsync再帰的なファイル転送を実行しない場合(-r未使用)、ディレクトリ転送を拒否します。

代わりに:

rsync -v remote:'data/*.csv' ./

これにより、コンピュータのホームディレクトリにあるディレクトリ内のすべてのファイルがコピーされます.csv。ファイルはローカルホストの現在のディレクトリに転送されます。dataremote

リモートファイルと同様に、ローカルファイルに権限、タイムスタンプなどを設定するには、--archive-a)オプションを追加します。

rsync -va remote:'data/*.csv' ./

このフラグは他のフラグ()がたくさんあることを-a意味しますが、単一のディレクトリからファイルをインポートするため、ここでは実際には使用されません。使用すべき-r-rlptgoD-r特定ローカル権限とタイムスタンプフラグを設定するには、--perms-p)と--times-t)を代わりに使用してください。

答え2

man rsyncあなたが必要とする-aロゴによると

-a, --archive  archive mode; equals -rlptgoD (no -H,-A,-X)

rsync -e "ssh remote" -av ....

詳細

-r, --recursive             recurse into directories
-l, --links                 copy symlinks as symlinks
-p, --perms                 preserve permissions
-t, --times                 preserve modification times
-g, --group                 preserve group
-o, --owner                 preserve owner (super-user only)
-D, --devices --specials    preserve devices and special files

関連情報