リモートサーバーから最新のファイルをコピーする

リモートサーバーから最新のファイルをコピーする

.doc他の種類のファイルに加えて、リモートサーバー(SCPサポート)にファイルのコレクションがあります。

.docリモートサーバーから最新の(最も最近修正された)ファイルを検索するスクリプトを作成しようとしています。私のスクリプトは別のサーバーに展開できるため、現在の作業ディレクトリへのパスは絶対パスにすることはできません。

次の 2 つの手順で問題を部分的に解決できます。

  1. .docリモートサーバー上のすべてのファイルを自分のローカル~/Downloadsフォルダにコピーします。

    scp -i key.pem abc@xyz:/tmp/*.doc ~/Downloads/
    
  2. 最新のファイルを選択し~/Downloadsて目的のフォルダにコピーします。

    cd ~/Downloads
    latest_file=$(ls -t *.doc | head -n 1)
    cp -p "$latest_file" /current working directory
    

中間フォルダにすべてのファイルをダウンロードせずに、1つのステートメントでリモート.docサーバーのxyzフォルダの下の最新のファイルをローカルコンピュータにコピーする方法は?/tmp

答え1

問題が何であるかわかりませんが、現在のディレクトリにコピーする場合は、.次のコマンドを使用して現在のディレクトリを参照してください。

scp -i key.pem abc@xyz:/tmp/*.doc .

答え2

これが問題を解決するかどうかを見てみましょう。スクリプトを作成します。

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

これにより、リモートサーバーで「ls -ht /tmp/*.doc | head -n 1」コマンドが実行され、最新の文書が表示されます。リモートサーバー上の指定されたファイルを現在のディレクトリに同期します。 ssh / rsyncはまた、ユーザー "abc"のパスワードを尋ねます。可能な限りパスワードのないログインまたはキーファイル "key.pem"を使用することをお勧めします。

関連情報