ディレクトリをコピーしようとしていますが、特定のファイルだけをコピーしようとしています。
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 -
f
tar
tar
- この
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/