无需rsync实现两台Debian 9机器的目录增量同步方案咨询
刚好处理过类似的场景,结合你的需求(两台Debian 9机器、只能用SFTP/Samba/WebDAV的哑存储盒、增量同步),给你整理了几个落地性强的方案,都是不需要在存储盒上装任何软件的:
方案一:基于SFTP的增量同步
Debian 9自带的rsync就能配合SFTP完成增量同步,不需要存储盒端有rsync服务——毕竟它是哑设备。核心思路是:机器A把本地目录增量同步到存储盒的SFTP目录,机器B再从存储盒的SFTP目录增量拉取到本地,双向保持一致。
机器A→存储盒的同步步骤
- 确认rsync已安装(Debian 9默认自带,没装的话执行:
sudo apt install rsync) - 执行增量同步命令:
rsync -avz --delete --progress --rsh="sftp -oPort=22" /path/to/your/local/dir/ sftp-user@storage-box-ip:/remote/sftp/target/dir/
参数解释:
-a:归档模式,保留文件权限、时间戳、软链接等所有属性-v:显示详细同步日志,方便排查问题-z:传输时压缩数据,节省带宽--delete:删除存储盒上本地已不存在的文件(可选,根据你是否需要双向严格一致来决定)--rsh="sftp -oPort=22":指定用SFTP作为传输通道,替换rsync默认的SSH;如果存储盒SFTP端口不是22,修改Port值即可
机器B→存储盒的拉取同步步骤
同样用rsync反向拉取:
rsync -avz --delete --progress --rsh="sftp -oPort=22" sftp-user@storage-box-ip:/remote/sftp/target/dir/ /path/to/your/local/dir/
方案二:基于Samba的增量同步
如果存储盒支持Samba,把共享目录挂载到两台Debian机器上,再用rsync同步本地挂载目录,这种方式最直观,效率也高。
挂载Samba共享到机器A
- 安装挂载工具:
sudo apt install cifs-utils - 创建挂载点:
sudo mkdir /mnt/storage-samba - 临时挂载共享目录(替换成你的Samba用户名、密码、存储盒IP和共享名):
sudo mount -t cifs //storage-box-ip/your-share-name /mnt/storage-samba -o username=samba-user,password=samba-pass,vers=3.0
- (可选)设置开机自动挂载:编辑
/etc/fstab,添加一行:
//storage-box-ip/your-share-name /mnt/storage-samba cifs username=samba-user,password=samba-pass,vers=3.0 0 0
增量同步操作
挂载完成后,机器A同步到存储盒:
rsync -avz --delete --progress /path/to/your/local/dir/ /mnt/storage-samba/
机器B同样挂载Samba共享后,拉取同步:
rsync -avz --delete --progress /mnt/storage-samba/ /path/to/your/local/dir/
方案三:基于WebDAV的增量同步
WebDAV协议推荐用rclone工具,它对WebDAV的支持非常友好,而且原生支持增量同步,Debian 9上安装和配置都很简单。
在两台机器上安装rclone
可以用官方脚本安装最新版:
curl https://rclone.org/install.sh | sudo bash
或者用Debian源安装(版本可能稍旧,但足够满足需求):
sudo apt install rclone
配置rclone连接WebDAV存储盒
在机器A上执行rclone config,按提示完成配置:
- 输入
n创建新的远程配置 - 给远程起个容易识别的名字,比如
webdav-storage - 选择存储类型为
WebDAV(对应编号,比如选项7) - 输入存储盒的WebDAV地址(比如
https://your-storage-box-url/webdav) - 输入WebDAV的用户名和密码
- 确认配置无误后保存退出
增量同步命令
机器A同步到存储盒:
rclone sync -P /path/to/your/local/dir/ webdav-storage:/remote-webdav-dir/
参数-P会显示实时同步进度,sync命令会让目标目录和源目录完全一致,只同步变化的文件和目录。
机器B同样配置好rclone后,拉取同步:
rclone sync -P webdav-storage:/remote-webdav-dir/ /path/to/your/local/dir/
额外实用建议
- 定时自动同步:如果需要定期同步,可以用cron任务。比如在机器A上执行
crontab -e,添加一行每天凌晨2点同步的任务:
0 2 * * * rsync -avz --delete --rsh="sftp -oPort=22" /path/to/your/local/dir/ sftp-user@storage-box-ip:/remote/sftp/target/dir/ >> /var/log/sync-a.log 2>&1
机器B同理添加对应的拉取任务,日志文件方便后续排查问题。
- 大文件优化:rsync和rclone都支持只同步文件的变化部分,不需要重新传输整个大文件,非常适合大文件较多的场景。
- 安全加固:确保SFTP用默认的加密传输,WebDAV用HTTPS协议,Samba可以配置SMB加密,避免数据传输过程中被窃取。
内容的提问来源于stack exchange,提问作者Kadabash
相关产品推荐
相关产品推荐

