我有大约150多个带有日期的文件夹,我需要每天上传到不同的服务器。我需要在上传过程中优先处理更新的文件夹,因为它们使用最多,我可以在其余文件上传时进行处理。第一次运行脚本时,必须根据文件夹名称将每个文件夹从最新到最旧下载。以下是一些示例文件夹名称:
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 server@192.168.1.120:/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 root@192.168.1.123:.
#######################
expect {
-re ".*es.*o.*" {
exp_send "yes\r"
exp_continue
}
-re ".*sword.*" {
exp_send "password\r"
}
}
interact
答案 0 :(得分:-1)
不确定scp是否具有此功能,但您可以通过向其添加一个小逻辑来自行完成:
for folder in $(ls -t /Users/$username/Files); do
sshpass -p <password> scp -o StrictHostKeyChecking=no -r /Users/$username/Files/$folder server@192.168.1.120:/var/www/html/backups
done