SCP:ディレクトリをコピーしますが、特定のファイルのみをコピーします。

SCP:ディレクトリをコピーしますが、特定のファイルのみをコピーします。

ディレクトリをコピーしようとしていますが、特定のファイルだけをコピーしようとしています。

sudo scp -r user@ip:'ls /nas1/logs/tomcat/dev-main/dev-main*|grep localhost_access_log.2023-09-21.txt' /home/test

ファイルがリモートサーバーにある場合

/nas1/logs/tomcat/dev-main/dev-main-1111/localhost_access_log.2023-09-21.txt    
/nas1/logs/tomcat/dev-main/dev-main-1234/localhost_access_log.2023-09-21.txt

その後、そのファイルをローカルサーバーにコピーしたいと思います。

/home/test/dev-main-1111/localhost_access_log.2023-09-21.txt
/home/test/dev-main-1234/localhost_access_log.2023-09-21.txt

scpコマンドでgrepを使用できますか?

答え1

rsyncコメント通りにインストールされていないので使用してtarください。

ssh user@ip 'cd /nas1/logs/tomcat/ && tar cf - dev-main-*/localhost_access_log.2023-09-22.txt' | tar xf -

説明する:

  • ssh user@ip '...'...リモートホストでコマンドを実行する
  • この場合、実行するコマンドは、cd /nas1/logs/tomcat/ && tar cv dev-main-*/localhost_access_log.2023-09-22.txtまずリモートディレクトリを次に変更して/nas1/logs/tomcat/から、tar転送するファイルと一致するglobで実行することです。
  • このtarコマンドにはc、アーカイブを標準出力にダンプするオプションが含まれています(オプションがない場合は、実装および/または環境に応じてデフォルトのテープ装置または標準出力に送信されます)。ここにローカルコマンドのパイプがあります。f -ftartar
  • このtar xf -部分は、標準入力(パイプのもう一方の端)からアーカイブを読み取って抽出し、ディレクトリ構造といくつかのその他のメタデータ(pより多くのメタデータを保存するために追加されたオプション)を保存します。

あなたはにする必要があります/home/test/

答え2

コマンドをパスに入れることはできませんが、scp標準のglob(ワイルドカードパターン)と一致するファイルセットを望むように見え、ソースパスを維持する他のツールがあります。

これは:

rsync -avR 'user@ip:/nas1/logs/tomcat/./dev-main/dev-main-*/localhost_access_log.2023-09-21.txt' /home/test/

関連情報