scpを使用して特定の拡張子を持つファイルをコピーする

scpを使用して特定の拡張子を持つファイルをコピーする

ファイルを.jpgコピーしたいのですが、コピーしたフォルダに拡張子が異なるファイルがあります。私は次のことをしています:.pngscp

scp [email protected]:/folder/*.{jpg,png} .

拡張タイプごとにパスワードの入力を求められました。パスワードを一度だけ入力する方法はありますか?

答え1

次に変更してください。

scp [email protected]:'/folder/*.{jpg,png}' .

一重引用符のペアを参照してください。あなたの場合、ローカルシェルは式を評価し、実際には次のように変換します。

scp [email protected]:/folder/*.jpg [email protected]:/folder/*.png .

だから2つのパスワードを尋ねた。このソリューションでは、一対の一重引用符がローカルシェルの評価から保護されるため、(リモート)scpによって呼び出されたリモートシェルは式を評価します。

答え2

サーバー間のコピー操作には rsync を使用するのが最善です。

 rsync -avzh user@remoteip:/path/*.jpg [email protected]:/path/*.png localserverpath

rsyncを使用すると、パスワードを一度だけ尋ねます。

また、rsync では、ファイルを転送する際に、宛先の場所にファイルがあることを確認し、ソースの場所と宛先の場所の内容が同じであることを確認します。

ファイルがターゲットの場所にも存在し、コンテンツが同じ場合、ファイルはコピーされません。ターゲットの場所に存在しないファイルのみがコピーされるため、処理時間が短縮されます。

rsync は増分バックアップツールとしてよく使用されます。

答え3

コメントの誰かがすべてのサブディレクトリからファイルをインポートする方法を尋ね、ABはこれに明確な解決策を提供するためにssh + tarを使用することを提案しました。できる使用(zipの交換):

ssh user@ip_address 'cd /path/to/folder/; zip all_files.zip $(find . -name "*.png" -or -name "*.jpg")'; scp user@ip_address:/path/to/folder/all_files.zip .

注:cdこれは、解凍時にルートディレクトリへのフルパスを含むzipファイルを取得できないようにするためです。

関連情報