centos sftp如何进行数据备份恢复
导读:CentOS 下使用 SFTP 进行数据备份与恢复 一 场景与准备 适用对象:以 OpenSSH 的 SFTP 为传输通道,将本地或远端目录的数据做周期性备份,并在需要时恢复到本地或远端。 前置条件: 确认 sshd 已安装并运行:su...
CentOS 下使用 SFTP 进行数据备份与恢复
一 场景与准备
- 适用对象:以 OpenSSH 的 SFTP 为传输通道,将本地或远端目录的数据做周期性备份,并在需要时恢复到本地或远端。
- 前置条件:
- 确认 sshd 已安装并运行:
sudo systemctl start sshd & & sudo systemctl enable sshd - 防火墙放行 22/TCP:
sudo firewall-cmd --permanent --add-port 22/tcp & & sudo firewall-cmd --reload - 建议启用 公钥认证 以便自动化;如用密码,可借助 lftp 或 expect 实现非交互登录(见下文脚本示例)。
- 确认 sshd 已安装并运行:
二 备份与恢复方法
- 方法一 使用 SCP 或 SFTP 手工/脚本传输
- 备份(本地→远端 SFTP):
scp -r /path/to/local/dir user@remote:/path/to/remote/dir - 恢复(远端→本地):
scp -r user@remote:/path/to/remote/dir /path/to/local/dir - 交互式 SFTP:
sftp user@remote,用put/get上传/下载。 - 适用:临时操作、一次性迁移、小规模目录。
- 备份(本地→远端 SFTP):
- 方法二 使用 rsync 增量备份(推荐)
- 备份(本地→远端):
rsync -avz --delete -e ssh /path/to/local/ user@remote:/path/to/remote/ - 恢复(远端→本地):
rsync -avz --delete -e ssh user@remote:/path/to/remote/ /path/to/local/ - 特点:仅传输差异、断点续传、可校验一致性,适合日常增量备份与快速回滚。
- 备份(本地→远端):
- 方法三 打包归档后传输(适合离线/归档)
- 备份:
tar -czvf backup_$(date +%F).tar.gz /path/to/dir - 传输:
scp backup_*.tar.gz user@remote:/backup/ - 恢复:
tar -xzvf backup_*.tar.gz -C /restore/dir - 适用:需要压缩归档、跨环境迁移或长期留存。
- 备份:
三 自动化与定时任务
- 公钥免密登录(便于定时任务)
- 本地生成密钥:
ssh-keygen -t rsa -b 2048 - 将公钥拷贝到远端:
ssh-copy-id user@remote
- 本地生成密钥:
- 定时备份脚本示例(rsync 增量)
- 备份脚本
/usr/local/bin/backup_sftp.sh:#!/bin/bash SRC="/data" DST="user@remote:/backup/data_$(date +%F)" LOG="/var/log/sftp_backup.log" rsync -avz --delete -e ssh "$SRC/" "$DST" > > "$LOG" 2> & 1 echo "Backup finished at $(date)" > > "$LOG" - 赋权与定时:
chmod +x /usr/local/bin/backup_sftp.sh sudo crontab -e # 每天 02:00 执行 0 2 * * * /usr/local/bin/backup_sftp.sh
- 备份脚本
- 如需密码自动化的替代方案(不建议明文密码,优先用公钥)
- 使用 lftp 的 sftp 协议批量上传/下载(适合脚本化,但需妥善管理凭据)。
四 迁移 SFTP 服务器与目录权限要点
- 数据备份:打包用户数据目录(如 /home)与关键配置(如 /etc/ssh/sshd_config)
sudo tar -czvf /backup/home_$(date +%F).tar.gz /homesudo cp /etc/ssh/sshd_config /backup/sshd_config_$(date +%F).bak
- 在新服务器恢复数据与配置并重启服务
sudo tar -xzvf /backup/home_*.tar.gz -C /sudo cp /backup/sshd_config_*.bak /etc/ssh/sshd_configsudo systemctl restart sshd
- 目录权限与 SFTP Chroot 常见要求
- Chroot 根目录(如 /home/username)及其上级目录通常需由 root 拥有,权限 755;用户家目录由用户拥有,权限 700/755(视策略而定),否则 internal-sftp 可能拒绝登录。
- 示例(创建仅供 SFTP 的用户):
sudo groupadd sftpusers sudo useradd -m -G sftpusers sftpuser sudo passwd sftpuser # 建议:/home/sftpuser 755 root:root;/home/sftpuser/files 700 sftpuser:sftpuser - 修改 /etc/ssh/sshd_config(片段):
Subsystem sftp internal-sftp Match Group sftpusers ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no - 修改后重启:
sudo systemctl restart sshd。
五 常见问题快速排查
- 无法连接:检查 sshd 状态
systemctl status sshd,确保 22/TCP 放行,必要时查看日志journalctl -u sshd或 /var/log/secure。 - SFTP 子系统配置:确认 /etc/ssh/sshd_config 中
Subsystem sftp internal-sftp或指向正确的sftp-server路径,修改后重启 sshd。 - 权限问题:Chroot 根目录及上级目录需 root:root 755;用户目录由用户拥有且权限合理,否则 internal-sftp 会拒绝访问。
- 自动化失败:优先使用 SSH 公钥;若必须用密码,脚本可用 lftp 或 expect,并确保凭据安全存储。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos sftp如何进行数据备份恢复
本文地址: https://pptw.com/jishu/774467.html
