标签: SCP

  • 通过 SCP自动同步远程备份文件到本地

    使用 scp 命令在 Linux 环境中实现自动备份。通过脚本并结合 cron 定时任务,实现每天自动从远程服务器拉取指定目录的备份数据到本地指定路径。

    1. 配置密钥登录

    1. 更新系统并安装所需的软件:
    apt update
    apt install -y openssh-client nano cron
    1. 创建 .ssh 目录:
    mkdir .ssh
    1. 将私钥文件放入 .ssh 目录,并设置正确的权限:
    nano /root/.ssh/id_rsa
    chmod 600 /root/.ssh/id_rsa

    2. 设置备份脚本

    1. 创建并编辑备份脚本:
    nano /root/backup.sh
    1. 在 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 本地文件目录路径
    1. 设置脚本执行权限:
    chmod +x /root/backup.sh

    3. 设置定时任务

    1. 编辑 crontab 配置,设置每天凌晨三点执行备份脚本:
    crontab -e
    1. 在 crontab 文件中添加以下内容:
    0 3 * * * /root/backup.sh >> /var/log/backup.log 2>&1