2016-11-22 8 views
0

私は毎日異なるサーバーにアップロードする必要がある日付がある約150以上のフォルダを持っています。アップロードの最中に最も優先度の高いフォルダが優先される必要があります。残りのファイルをアップロードしている間は作業できます。私が最初にスクリプトを実行するときは、フォルダ名に基づいてすべてのフォルダを最新から古いものにダウンロードする必要があります。ここではいくつかのサンプルフォルダ名です:SCPファイル転送ファイルの優先順位付け

2016-01-02 2016-01-02 2016-01-03 2016-01-04 2016-01-05 2016-01-06 
2016-02-07 2016-02-11 2016-02-13 2016-02-18 2016-02-23 2016-02-28 
2016-03-07 2016-03-16 2016-03-21 

これらのフォルダのすべてがFilesという名前のフォルダ内にあると私は実行すると、古いファイル名を持つscp -r /Users/$username/Files [email protected]:/var/www/html/backups フォルダが最初にアップロードします。 (例:2016-01-02,2016-01-02,2016-01-03)私の目標はこれを逆にして、反対の順序でフォルダをアップロードすることです(例:2016-03-21,2016-03-16,2016-03-07)これを行うには何かお手伝いがありますか? **好ましくは#!/usr/bin/expect -f myを現在のスクリプトに使用すると、コマンドを実行するたびにパスワードを入力する必要はありません。ここで私が現在使用しているものである:

#!/usr/bin/expect -f 
set username [exec id -un] 
spawn scp -r /Users/$username/Files [email protected]:. 
####################### 
expect { 
-re ".*es.*o.*" { 
    exp_send "yes\r" 
    exp_continue 
    } 
-re ".*sword.*" { 
    exp_send "password\r" 
    } 
} 
interact 
+3

あなたが実際に求めてきましたことをわかりませんここで質問しますが、 'scp'ではなく' rsync'を望むように聞こえます。 –

+1

Qを更新して、古いフォルダのデータが変更されているかどうかを確認してください(常に/あり/なし)。すでに送信されているフォルダをスキップしたい場合は、別のQです。明確にしてください(あなたのQの本文では、明確なQがあればこのコメントを削除することをお勧めします)。がんばろう。 – shellter

+0

@shellter詳細を追加しました。十分であることを期待してください – evilpanda

答えて

-1

ないscpコマンドがこの機能を持っていますが、あなたはそれに小さなロジックを追加することによって、それを自分で行うことができるかどうかを確認します。

for folder in $(ls -t /Users/$username/Files); do 
    sshpass -p <password> scp -o StrictHostKeyChecking=no -r /Users/$username/Files/$folder [email protected]:/var/www/html/backups 
done 
+0

愚かな質問のように見えるかもしれませんが、このpythonかbashですか? @Waman – evilpanda

+1

全くない!公正な質問!シェル(bash)スクリプト – Waman

+0

これ以外のスクリプトでしかこれができなかった場合は、ここをクリックしてください。したがって、パスワードを必要としないように自動化することができます。 (私はrsaキーを使用できません)@Waman – evilpanda

関連する問題