我正在运行CentOS 6。
我需要每小时将一些文件上传到另一台服务器。
我有SSH访问密码到服务器。但是ssh-keys等不是一种选择。
任何人都可以帮助我使用.sh脚本通过scp上传文件并在成功上传后删除原文吗?
答案 0 :(得分:1)
为此,我建议使用rsync而不是scp,因为它更强大。只需将以下内容放入可执行脚本即可。在这里,我假设所有文件(仅此而已)都在local_dir /指向的目录中。
#!/bin/env bash
rsync -azrp --progress --password-file=path_to_file_with_password \
local_dir/ remote_user@remote_host:/absolute_path_to_remote_dir/
if [ $? -ne 0 ] ; then
echo "Something went wrong: don't delete local files."
else
rm -r local_dir/
fi
选项如下(有关详细信息,请参阅,例如http://ss64.com/bash/rsync.html):
-a, --archive Archive mode -z, --compress Compress file data during the transfer -r, --recursive recurse into directories -p, --perms Preserve permissions --progress Show progress during transfer --password-file=FILE Get password from FILE--delete-after Receiver deletes after transfer, not during
修改:删除 - 删除 - 之后,因为那不是OP的意图
设置包含密码的文件的权限时要小心。理想情况下,只有你应该访问他的文件。
像往常一样,我建议稍微使用rsync来熟悉它。在删除本地文件之前,最好检查rsync的返回值(使用$?)。
有关rsync的更多信息:http://linux.about.com/library/cmd/blcmdl1_rsync.htm