リモートサーバーから最新の3つのファイルをコピーします。

リモートサーバーから最新の3つのファイルをコピーします。

他の種類のファイルに加えて、リモートサーバー(SCPサポート)には.docファイルセットがあります。

私はスクリプトを見ました:

FILE=`ssh abc@xyz ls -ht /tmp/*.doc | head -n 1`
rsync -avz -e ssh abc@xyz:"$FILE" .

リモートサーバーから最新のファイルをコピーするには、「head -n 1」パラメータを使用します。ところで、「head -n 3」パラメータを使用してもリモートサーバーから最新の3つのファイルをコピーできないことがわかりました。

ベストアンサー1

abcログインシェルがxyz次のような場合zsh

ssh abc@xyz 'cd /tmp && tar cf - ./*.doc(.LM-100om[1,3]) | gzip -3' |
  gunzip | tar xvf -

そうでない場合zshzshインストールされている場合):

ssh abc@xyz "cd /tmp && exec zsh -c 'tar cf - ./*.doc(.LM-100om[1,3]) | gzip -3'" |
  gunzip | tar xvf -

/tmpとにかく、(またはグローバルに書き込み可能なディレクトリ)は地雷原であることに注意してください。上記では、(.LM-100)100MiB未満の一般的なファイル(含む)のみを選択し、tarシンボリックリンクをたどるか、デバイスまたは名前付きパイプの内容を読み取らないように非常に注意を払いました。しかし、まだ誰かがファイルをいくつかのテビバイトに拡大することができる競争条件があります。拡張グローブとtar実行中のコマンド。

もちろん、.doc拡張子を持つマルウェアは誰でも削除できるため、これらのダウンロードには慎重に/tmp対処する必要があります。

にあるよりもプライベートディレクトリにある方が良いです/tmp

おすすめ記事