Ubuntu使用SFTP备份数据的方法
SFTP基于SSH协议,默认集成在Ubuntu的openssh-server中,无需额外安装SFTP组件,只需配置即可使用。
sudo apt update && sudo apt install openssh-server
/etc/ssh/sshd_config),确保以下关键配置未被注释:Subsystem sftp /usr/lib/openssh/sftp-server
若需限制用户仅能通过SFTP访问(增强安全性),可添加以下配置(需提前创建sftpusers组并添加用户):Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
保存文件后,重启SSH服务使配置生效:sudo systemctl restart sshd
sudo mkdir -p /backup/data # 创建备份目录
sudo chown your_username:your_group /backup/data # 修改所有者(替换为你的用户名和组)
sudo chmod 700 /backup/data # 仅所有者可读写执行
通过命令行工具sftp可直接传输文件,适用于临时或手动备份场景。
username(服务器用户名)、remote_host(服务器IP/域名):sftp username@remote_host
输入密码后进入SFTP会话(提示符变为sftp>)。put命令,指定本地路径和远程目标路径(如将本地~/documents/report.pdf备份到服务器/backup/data目录):put ~/documents/report.pdf /backup/data/
-r参数递归上传(如备份本地~/photos目录):put -r ~/photos /backup/data/
exit或bye结束SFTP连接。通过脚本和cron定时任务可实现每日自动备份,减少手动操作。
/home/your_username/backup_script.sh),内容如下(替换为实际路径和用户名):#!/bin/bash
# 定义变量
LOCAL_DIR="/home/your_username/documents" # 本地待备份目录
REMOTE_USER="your_username" # 服务器用户名
REMOTE_HOST="remote_host" # 服务器IP/域名
REMOTE_DIR="/backup/data" # 服务器备份目录
TIMESTAMP=$(date +%Y%m%d_%H%M%S) # 时间戳(用于区分备份版本)
# 使用SFTP上传目录(递归)
sftp $REMOTE_USER@$REMOTE_HOST <<EOF
put -r $LOCAL_DIR $REMOTE_DIR/$TIMESTAMP
bye
EOF
保存后赋予执行权限:chmod +x /home/your_username/backup_script.sh
crontab -e),添加以下行(如每天凌晨2点执行备份):0 2 * * * /home/your_username/backup_script.sh >> /home/your_username/backup.log 2>&1
说明:>> /home/your_username/backup.log 2>&1会将脚本输出(包括错误信息)追加到日志文件,便于后续排查问题。gpg等工具加密。700),防止未授权访问;若使用chroot限制用户,需确保目录结构符合要求(如ChrootDirectory的父目录需属root)。rsync(支持断点续传)替代put命令。