我使用脚本分两步下载文件:
- 首先,我使用 .zip 文件将包含文件列表的文件从服务器下载到我的主机
rsync
。 - 然后,我将
rsync
列表中给出的实际文件(相当多)从服务器下载到我的主机。
问题是该脚本定期询问密码,即它不断询问我在服务器上的帐户的密码。文件下载没有任何问题,所以我猜测 for 循环导致了问题,因为它在从服务器下载列表中的每个文件时要求输入密码。
如果我是正确的,那么可能的解决方案是什么,以便脚本只要求输入一次密码?如果我错了,请纠正我。
笔记:顺便说一句,不允许基于密钥的身份验证。
#!/bin/bash
rsync --partial -z --remove-source-files server:~/list ~/.
for i in $(cat ~/list)
do
rsync --partial -z server:/some/location/$i ~/someplace/$i
done
答案1
你的理论对我来说听起来很正确。每次调用时通过 for 循环rsync
,它都会重新连接到服务器并导致重新提示您。
~/list
您for
可以直接将此列表提供给rsync
使用开关,而不是循环遍历文件--files-from=
。
例子
$ rsync --partial -z --files-from=/some/list server:/some/location/ ~/someplace/