如何从受密码保护的SSH服务器定期备份脚本文件?
用SCP或Rsync实现每周SSH密码登录的脚本备份
一、SCP 方法(适合新手,操作简单)
SCP是基于SSH的文件传输工具,原生支持密码验证登录,适合单次或定期备份单个文件。
1. 手动执行备份命令
在本地终端运行以下命令,替换对应参数即可:
scp 用户名@服务器IP:/服务器上的脚本路径 /本地保存路径
示例:假设服务器用户为admin,IP是192.168.1.100,脚本路径为/opt/scripts/auto_run.sh,本地备份目录是~/backup/scripts/,命令如下:
scp admin@192.168.1.100:/opt/scripts/auto_run.sh ~/backup/scripts/
执行后输入服务器SSH密码,即可完成备份。
2. 自动化每周备份(无需手动输密码)
要实现定时自动备份,需解决自动输入密码的问题,推荐使用sshpass工具(需先在本地安装):
- 安装sshpass(以Debian/Ubuntu为例):
sudo apt install sshpass
- 编写备份脚本
backup_script.sh:
#!/bin/bash # 配置参数 SSH_USER="admin" SSH_HOST="192.168.1.100" REMOTE_FILE="/opt/scripts/auto_run.sh" LOCAL_DIR="~/backup/scripts/" SSH_PASSWORD="你的服务器密码" # 创建本地备份目录(不存在则自动创建) mkdir -p $LOCAL_DIR # 执行SCP备份 sshpass -p $SSH_PASSWORD scp $SSH_USER@$SSH_HOST:$REMOTE_FILE $LOCAL_DIR
- 给脚本添加执行权限:
chmod +x backup_script.sh
- 设置每周定时任务(使用crontab):
运行crontab -e,添加以下内容(示例为每周日凌晨2点执行备份):
0 2 * * 0 /path/to/backup_script.sh
保存退出后,系统会自动按设定时间执行备份。
二、Rsync 方法(更高效,适配持续更新的文件)
Rsync比SCP更高效,它仅传输文件中变化的部分,适合你的持续更新脚本,能节省带宽和备份时间。
1. 手动执行备份命令
基本命令格式如下:
rsync -avz 用户名@服务器IP:/服务器上的脚本路径 /本地保存路径
示例:
rsync -avz admin@192.168.1.100:/opt/scripts/auto_run.sh ~/backup/scripts/
参数说明:
-a:归档模式,保留文件权限、修改时间等属性-v:显示详细传输日志-z:压缩传输数据,减少带宽占用
执行后输入SSH密码即可完成备份。
2. 自动化每周备份
同样结合sshpass实现自动备份,编写脚本backup_rsync.sh:
#!/bin/bash SSH_USER="admin" SSH_HOST="192.168.1.100" REMOTE_FILE="/opt/scripts/auto_run.sh" LOCAL_DIR="~/backup/scripts/" SSH_PASSWORD="你的服务器密码" mkdir -p $LOCAL_DIR sshpass -p $SSH_PASSWORD rsync -avz $SSH_USER@$SSH_HOST:$REMOTE_FILE $LOCAL_DIR
添加执行权限后,通过crontab设置定时任务即可,配置逻辑与SCP的定时任务一致。
注意事项
- 脚本中明文存储密码存在安全风险,若服务器支持,优先配置SSH密钥登录,可彻底避免密码问题,安全性更高。
- 定期检查本地备份目录,确认文件正常生成,确保备份有效性。
- 若本地是Windows系统,可使用Git Bash、WSL或PuTTY配套的
pscp工具,命令逻辑与Linux一致。
内容的提问来源于stack exchange,提问作者SparkAF
相关产品推荐
相关产品推荐

