Debian 备份数据自动同步到群晖nas的方法

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

原创文章,作者:开心电脑网,如若转载,请注明出处。

(2)
上一篇 2025年11月14日
下一篇 2025年11月21日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注