如何实现从上传服务器随机同步文件至存储服务器?优化脚本密码限制
改进方案:支持多主机独立认证+动态服务器列表
推荐方案:SSH密钥认证(安全无密码)
这是最安全可靠的方式,完全不需要明文存储密码,同时能实现动态管理服务器列表。
步骤1:配置SSH密钥对
在上传服务器(ftp.example.com)执行以下命令生成密钥对(一路回车,不要设置密钥密码):
ssh-keygen -t ed25519
步骤2:分发公钥到存储服务器
依次将公钥复制到每台存储服务器的root用户下:
ssh-copy-id root@fs1.example.com ssh-copy-id root@fs2.example.com ssh-copy-id root@fs3.example.com ssh-copy-id root@fs4.example.com
步骤3:编写改进后的脚本(支持动态服务器列表)
创建一个服务器列表文件/root/storage_hosts.txt,每行一个存储服务器的登录信息(支持注释,用#开头):
# 存储服务器列表 root@fs1.example.com root@fs2.example.com root@fs3.example.com root@fs4.example.com
然后替换原脚本为以下内容(路径/root/sync_mp4.sh):
#!/bin/bash # 从列表文件中随机选择一台可用主机(忽略注释和空行) TARGET_HOST=$(grep -v '^#' /root/storage_hosts.txt | grep -v '^$' | shuf -n1) # 检查是否获取到有效主机 if [ -z "$TARGET_HOST" ]; then echo "错误:未找到可用的存储服务器" exit 1 fi # 同步符合条件的文件到随机主机,同步后删除源文件 find /root/* -mmin +1 -type f -name '*.mp4' -exec realpath {} \; -exec rsync --remove-source-files {} "${TARGET_HOST}":/ \;
给脚本添加执行权限:
chmod +x /root/sync_mp4.sh
备选方案:明文密码存储(不推荐,仅用于特殊场景)
如果因限制必须使用密码登录,可将主机和对应密码存储在文本文件中,但明文存储密码存在严重安全风险,需做好文件权限控制。
步骤1:创建带密码的服务器列表
创建/root/storage_hosts_with_pass.txt,每行格式为用户名@主机 密码(密码不能包含空格):
root@fs1.example.com your_fs1_pass root@fs2.example.com your_fs2_pass root@fs3.example.com your_fs3_pass root@fs4.example.com your_fs4_pass
设置严格的文件权限,仅root可读写:
chmod 600 /root/storage_hosts_with_pass.txt
步骤2:编写对应脚本
#!/bin/bash # 随机选择一行主机信息(忽略注释和空行) SELECTED_LINE=$(grep -v '^#' /root/storage_hosts_with_pass.txt | grep -v '^$' | shuf -n1) # 检查是否获取到有效信息 if [ -z "$SELECTED_LINE" ]; then echo "错误:未找到可用的存储服务器" exit 1 fi # 拆分主机和密码 TARGET_HOST=$(echo "$SELECTED_LINE" | cut -d' ' -f1) TARGET_PASS=$(echo "$SELECTED_LINE" | cut -d' ' -f2) # 同步文件 find /root/* -mmin +1 -type f -name '*.mp4' -exec realpath {} \; -exec sshpass -p "$TARGET_PASS" rsync --remove-source-files {} "${TARGET_HOST}":/ \;
同样给脚本添加执行权限:
chmod +x /root/sync_mp4.sh
注意事项
- SSH密钥方案中,若存储服务器的SSH端口不是默认22,可在
storage_hosts.txt中指定端口,比如root@fs1.example.com:2222。 - 动态更新服务器列表时,直接编辑对应列表文件即可,无需修改脚本。
- 定期检查cron任务的执行日志,确保同步正常。
内容的提问来源于stack exchange,提问作者Paulamonopoly
相关产品推荐
相关产品推荐

