多くのサーバーがありますデータセット定期的に更新されるファイル、/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
。ファイルはローカルホストの現在のディレクトリに転送されます。data
remote
リモートファイルと同様に、ローカルファイルに権限、タイムスタンプなどを設定するには、--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