gpt4 book ai didi

bash - CentOS上的cronjob,通过scp上传文件,成功后删除

转载 作者:行者123 更新时间:2023-12-04 19:39:12 26 4
gpt4 key购买 nike

我正在运行 CentOS 6。

我需要每小时将一些文件上传到另一台服务器。

我可以通过 SSH 访问服务器的密码。但是 ssh-keys 等不是一种选择。

任何人都可以通过 .sh 脚本帮助我,该脚本通过 scp 上传文件并在成功上传后删除原始文件?

最佳答案

为此,我建议使用 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 归档模式
-z, --compress 在传输过程中压缩文件数据
-r, --recursive 递归到目录
-p, --perms 保留权限
--progress 显示传输过程中的进度
--password-file=FILE 从文件中获取密码
--delete-after 接收者在传输后删除,而不是在传输期间

编辑:删除 --delete-after,因为这不是 OP 的意图

为包含密码的文件设置权限时要小心。理想情况下,只有您应该有权访问他的文件。

像往常一样,我建议使用 rsync 来熟悉它。最好在删除本地文件之前检查 rsync 的返回值(使用 $?)。

有关 rsync 的更多信息: http://linux.about.com/library/cmd/blcmdl1_rsync.htm

关于bash - CentOS上的cronjob,通过scp上传文件,成功后删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8952799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com