1️⃣ 新建共享文件夹
第一步:【控制面板】→【共享文件夹】→【名称:backup】→【描述:仅用于同步】→【勾选 √ 在网上邻居隐藏共享文件夹】→【勾选 √ 对没有权限的用户隐藏子文件夹和文件】→【勾选 √ 启用回收站】
下一步:【默认:跳过】
下一步:【默认:不勾选 启用数据总和检查码已实现高级数据完整,启用共享文件夹空间配额】
下一步:【确认设置】
下一步:【默认:配置用户权限】→【应用】
2️⃣ 新建用户
第一步:【控制面板】→【用户与群组】→【用户账号】→【新增】→【名称:kaixinit】→【描述:仅用于同步】→【密码:产生随机密码或设置密码】→【勾选 √ 不允许此用户修改密码】
下一步:【默认:加入用户群组】
下一步:【分配共享文件夹访问权限】→【名称:backup,用户权限:勾选 √ 可读写】
下一步:【默认:分配用户配额】
下一步:【分配应用程序访问权限】→【名称:SMB,用户权限:勾选 √ 允许】→【名称:rsync,用户权限:勾选 √ 允许】
下一步:【默认:设置用户速度限制】
下一步:【再次检查设置】→【完成】
3️⃣ 文件服务
【控制面板】→【文件服务→】【rsync】→【勾选 √ 启用rsync服务,勾选 √ 启用rsync账户】→【编辑rsync账户】→【rsync账户】→【新增】→【用户账号:下拉选择 kaixinit,密码和确认密码 留空】→【确定】
4️⃣ 应用程序权限
【控制面板】→【应用程序权限】→【rsync】→【双击编辑】→【用户账号:kaixinit,允许:勾选 √ 】→【保存】
5️⃣ 编辑共享文件夹backup
【控制面板】→【共享文件夹】→【backup】→【右键 编辑】→【编辑backup共享文件夹设置】→【权限】→【名称:kaixinit】→【自定义:勾选:√ 读取,勾选:√ 写入,其中删除子文件夹和文件和删除不要勾选,目的不同步删除权限】→【保存】→【保存】
如果需要同步删除文件,勾选:√ 写入,删除子文件夹和文件和删除,就是全部勾选:√ 写入
# Debian使用rsync同步备份到群晖nas rsync -avz --no-perms --no-owner --no-group --no-times --inplace /var/www/backup/ kaixinit@192.168.1.60::backup/ # Debian使用rsync同步删除到群晖nas rsync -avz --delete --no-owner --no-group --no-times --inplace /var/www/backup/ kaixinit@192.168.1.60::backup/ 备注: --no-perms 不保留文件权限(不执行 chmod) --no-owner 不尝试保留文件所有者(不执行 chown) --no-group 不保存文件所属组,避免发生权限冲突 --no-times 不保留文件时间戳 --inplace 直接覆盖目标文件,而不是创建临时文件
6️⃣ 如果增加密码,具体同步设置如下:
🌈 NAS端配置
【控制面板】→【文件服务→】【rsync】→【 启用rsync服务】→【 启用rsync账户】→【编辑rsync账户】→【rsync账户】→【例如: kaixinit,编辑→密码 和 确认密码 例如:kaixinit】
🌈 Debian端配置
# 写入密码并设置权限,密码"kaixinit"
sudo echo "kaixinit" > /var/www/.nas_pass
sudo chmod 600 /var/www/.nas_pass
# 查看内容(显示特殊字符)
cat -A /var/www/.nas_pass
# 输出结果
kaixinit$
# 查看文件权限
ls -l /var/www/.nas_pass
# 输出结果
-rw------- 1 kaixinit kaixinit 9 11月23日 15:07 /var/www/.nas_pass
# 使用rsync 指定新的密码文件开始同步
rsync -avz --no-perms --no-owner --no-group --no-times --inplace \
--password-file=/var/www/.nas_pass \
/var/www/backup/ \
kaixinit@192.168.1.60::backup/
# 使用rsync,内容一致则跳过,不显示跳过信息,
rsync -avz \
--checksum \
--info=NAME \
--no-perms --no-owner --no-group --no-times --inplace \
--password-file=/var/www/.nas_pass \
/var/www/backup/ \
kaixinit@192.168.1.60::backup/
# 每个参数解释(非常关键) 参数 作用 --checksum 基于文件内容校验和判断是否同步(最关键),内容不变就不会同步,也不会出现 --info=NAME 只显示真正传输的文件名称(不会显示跳过的) -a archive 模式(尽量保持文件属性) -z 压缩传输 --no-times 因为你不保持 mtime,因此必须配合 --checksum 否则 mtime 变了就总同步 --inplace 原地更新
7️⃣ 创建自动同步bash脚本
# 创建目录 mkdir -p /home/kaixinit/lnmp # cd目录 cd /home/kaixinit/lnmp # 删除脚本 rm -f nas_rsync.sh # 或者清空脚本内容 truncate -s 0 nas_rsync.sh # 新建bash脚本 nano nas_rsync.sh # 脚本内容,文本保存为UTF-8 BOM backup_sync_autodep # 赋予权限启动bash脚本 chmod +x nas_rsync.sh sudo ./nas_rsync.sh # 手工测试脚本中的守护进程,Ctrl+C 自动终止 sudo bash ./backup_sync_autodep.sh --daemon
8️⃣ 创建服务
# 新建服务
sudo nano /etc/systemd/system/nas_rsync.service
# 输入内容
[Unit] Description=Debian → NAS 自动同步服务 After=network.target [Service] ExecStart=/bin/bash /home/kaixinit/lnmp/nas_rsync.sh --daemon WorkingDirectory=/home/kaixinit/lnmp User=root Restart=always RestartSec=60 StandardOutput=append:/var/www/nas_rsync.log StandardError=append:/var/www/nas_rsync.log [Install] WantedBy=multi-user.target
# 重载服务
sudo systemctl daemon-reload
# 启动服务并设置为开机自启动
sudo systemctl start nas_rsync.service
sudo systemctl enable nas_rsync.service
# 查看服务状态
sudo systemctl status nas_rsync.service
注:显示Active: inactive: (running)启动,(dead)停止
# 修改服务配置后重启服务
sudo systemctl daemon-reload
sudo systemctl restart nas_rsync.service
# 查看实时日志
tail -f /var/www/nas_rsync.log
# 停止服务
sudo systemctl stop nas_rsync.service
# grep查看auto_wp_backup.sh 运行进程,只显示grep说明守护进程已经成功停止。
ps aux | grep nas_rsync.sh
# kill杀死服务进程
sudo kill -9 5061 5062 5063
# 查看全部服务,如运行异常可以查询全部服务,找到后在做对应的停止服务
systemctl list-units --type=service
# 检查服务内容
sudo cat /etc/systemd/system/nas_rsync.service
# 删除服务
sudo rm /etc/systemd/system/nas_rsync.service
# 检查服务内容是否有重复,是否被删除
systemctl list-units --type=service | grep nas
# 删除锁文件(选项2提示备份任务正在进行)
sudo rm -f /tmp/backup_locks/global_backup.lock
# 杀死进程的几个方法
sudo pkill -f nas_rsync.sh
sudo killall -9 nas_rsync.sh
ps aux | grep nas_rsync.sh | grep -v grep | awk '{print $2}' | xargs sudo kill -9
原创文章,作者:开心电脑网,如若转载,请注明出处。