使用 scp
命令在 Linux 环境中实现自动备份。通过脚本并结合 cron
定时任务,实现每天自动从远程服务器拉取指定目录的备份数据到本地指定路径。
1. 配置密钥登录
- 更新系统并安装所需的软件:
apt update
apt install -y openssh-client nano cron
- 创建
.ssh
目录:
mkdir .ssh
- 将私钥文件放入
.ssh
目录,并设置正确的权限:
nano /root/.ssh/id_rsa
chmod 600 /root/.ssh/id_rsa
2. 设置备份脚本
- 创建并编辑备份脚本:
nano /root/backup.sh
- 在
backup.sh
中添加以下内容:
#!/bin/bash
# Set the SFTP private key path and remote host information
PRIVATE_KEY="/root/.ssh/id_rsa"
REMOTE_USER="qixin"
REMOTE_HOST="192.168.1.100"
REMOTE_PATH="/opt/backup/*"
LOCAL_PATH="/opt/web-backup"
# Loop through files in remote directory and skip existing ones
for remote_file in $(ssh -i "$PRIVATE_KEY" "$REMOTE_USER@$REMOTE_HOST" "ls $REMOTE_PATH"); do
local_file="$LOCAL_PATH/$(basename $remote_file)"
# Check if the file already exists locally
if [ ! -f "$local_file" ]; then
echo "Downloading $remote_file..."
/usr/bin/scp -i "$PRIVATE_KEY" "$REMOTE_USER@$REMOTE_HOST:$remote_file" "$LOCAL_PATH"
else
echo "$remote_file already exists, skipping."
fi
done
# Exit the script
exit 0
说明
- PRIVATE_KEY 设置私钥路径
- REMOTE_USER 设置用户名
- REMOTE_HOST 设置IP地址
- REMOTE_PATH 远程文件目录路径
- LOCAL_PATH 本地文件目录路径
- 设置脚本执行权限:
chmod +x /root/backup.sh
3. 设置定时任务
- 编辑 crontab 配置,设置每天凌晨三点执行备份脚本:
crontab -e
- 在 crontab 文件中添加以下内容:
0 3 * * * /root/backup.sh
发表回复