私は毎日異なるサーバーにアップロードする必要がある日付がある約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
あなたが実際に求めてきましたことをわかりませんここで質問しますが、 'scp'ではなく' rsync'を望むように聞こえます。 –
Qを更新して、古いフォルダのデータが変更されているかどうかを確認してください(常に/あり/なし)。すでに送信されているフォルダをスキップしたい場合は、別のQです。明確にしてください(あなたのQの本文では、明確なQがあればこのコメントを削除することをお勧めします)。がんばろう。 – shellter
@shellter詳細を追加しました。十分であることを期待してください – evilpanda