Debian Samba 4域控巡检与sysvol备份脚本实践

发布时间:2026/11/6 3:52:55
Debian Samba 4域控巡检与sysvol备份脚本实践 简介面向在 Debian Jessie 或 Stretch 上维护 Samba 4 AD-DC 的运维人员与自建域环境爱好者这套脚本集合围绕日常备份、权限与 ACL 核查、域信息查看、DNS 批量配置及故障信息收集等场景提供可直接参考和复用的命令行工具与操作记录。zip 压缩包共 25 个文件以 12 个 Shell 脚本和 9 个 txt 说明为主另有 3 个 Markdown 文档与 1 个 backup_samba4 文件整体约 71KB体量轻便便于随取随用。已有约 250 人学习说明其在 Samba 4 运维圈具有一定参考价值。读者可按主题查阅脚本实现、对照 howto 文档理解配置思路并借鉴检查、排错与备份流程减少重复摸索成本。1. 从一台 Jessie 旧机说起版本没对齐Samba 4 的备份等于没做在 Debian 上搭 Samba 4 域控最麻烦的地方通常不在provision那一步而在于装完之后维护脚本没有跟系统版本对齐。Debian Jessie 和 Debian Stretch 这两个代号只差一代但仓库里 Samba 4 的打包方式、服务单元名、krb5 默认配置路径都不一样。同一份 howtos 直接照搬过去经常卡在启动服务或者备份还原上。这套 samba4 脚本集合是 Shell 写的作者明确说在 Debian Jessie 和/或 Debian Stretch 上测过核心功能就是两样samba-info 负责巡检backup-script 负责备份 sysvol。它适合已经在跑 AD DC、备份还靠手工敲命令的人也适合第一次搭域控、不想在排错上耗一晚上的新手。装不好最典型的后果是备份目录里文件一个不少真出事那天却一个都还原不回去。2. 环境准备Debian Jessie 与 Stretch 的包名差异和仓库配置装 Samba 4 脚本之前先花十分钟把系统层面弄清楚。这一步在图省事的人眼里是多余的但脚本本身只是外壳真正决定成败的是它调用的samba-tool、smbclient、systemctl在你这台机器上是不是同一个版本体系里的东西。Jessie 和 Stretch 的差异主要集中在三块Samba 包的分组、systemd 单元的组织方式以及 Kerberos 配置文件的默认落点。先把这三块确认掉后面再谈脚本怎么跑。2.1 先把版本对齐再谈安装不要急着apt-get install samba先看清楚这台机器到底是什么。发行代号决定了仓库里的 Samba 4 在哪个分支上也决定了后面systemctl能不能用samba-ad-dc这个单元名。常见的做法是先读系统标识再看包策略# 发行代号Jessie 对应 8Stretch 对应 9 cat /etc/os-release # 架构后面判断是不是要装 amd64 之外的东西 uname -m # 关键看清楚仓库里的 samba 来自哪个源、候选版本是什么 apt-cache policy samba apt-cache policy winbindapt-cache policy这三行的输出信息量比samba -V大得多。它会告诉你候选包来自jessie/main、stretch/main还是被人手工加进去的 backports 源。我见过不止一次装不起来的环境原因就是有人为了一个依赖把 backports 源加进去结果 samba 和 samba-libs 来自两个不同的分支samba-tool一跑就报符号找不到。提示如果apt-cache policy samba显示存在多个来源并且已安装版本与候选版本不一致先不要升级先记录当前状态。域控上的 Samba 升级属于变更操作不是修修补补。两个发行版在包结构上的差别对脚本影响最直接的是这几点能力Jessie 上的常见形态Stretch 上的常见形态主服务单元依赖 SysV 脚本或samba-ad-dc服务以samba-ad-dc.service为主winbind 相关库拆成独立包需要单独装同样拆包但依赖关系更明确ACL / xattr 支持需装samba-vfs-modules需装samba-vfs-modulesKerberos 客户端krb5-user必装krb5-user必装这张表的用法不是让你背下来而是装之前先确认。脚本里的备份逻辑会用到rsync -aHAX-A和-X分别要求目标文件系统支持 ACL 和扩展属性如果samba-vfs-modules没装全后面 sysvol 里的 ACL 在备份和还原之间就会悄悄丢失。这类问题不会在备份时报错只会在还原后客户端访问共享时报“拒绝访问”排查起来极其费时。2.2 依赖清单与 apt 安装确认完版本再一次性把依赖装齐。分开装也不是不行但每装一个包就apt-get autoremove一次在域控上属于自找麻烦。我一般会先更新索引再用一条命令把整套装完apt-get update apt-get install -y --no-install-recommends \ samba \ samba-common-bin \ samba-vfs-modules \ smbclient \ winbind \ libnss-winbind \ libpam-winbind \ krb5-user \ dnsutils \ acl \ attr \ rsync \ chrony逐项说一下为什么是这些samba和samba-common-bin提供samba-tool、smbpasswd这些脚本要调用的入口缺一个脚本就会在开头几行直接退出。samba-vfs-modules是 ACL 和扩展属性能力的来源备份脚本里rsync -aHAX的-A、-X靠它兜底。smbclient用于验证共享是否可达很多验证步骤只有它能给出直观输出。winbind、libnss-winbind、libpam-winbind让系统能解析域用户脚本里如果涉及getent passwd之类的检查会用到。krb5-user提供kinit、klist是 Kerberos 自检的必备工具。acl、attr提供getfacl、setfacl、getfattr还原演练时用来确认权限真的回来了。rsync和chrony分别对应备份和时间同步。装完之后立刻做一件事把 winbind 接进名称服务解析链。否则getent passwd永远查不到域用户你会以为是 Samba 出了问题其实是 nsswitch 没配。# /etc/nsswitch.conf 里这两行必须带 winbind # passwd: compat winbind # group: compat winbind sed -i s/^passwd:.*/passwd: compat winbind/ /etc/nsswitch.conf sed -i s/^group:.*/group: compat winbind/ /etc/nsswitch.conf grep -E ^(passwd|group): /etc/nsswitch.confsed这两行的作用是把原来的compat或files后面补上winbind让 NSS 在本地文件查不到时继续向 winbind 询问。改完必须重启 winbind 才生效但顺序上要等服务单元那一步再统一重启现在只改配置不改状态。2.3 主机名、时区与 DNS 回环这三件事在装域控时经常被当成小事实际是最影响首次启动的关键步骤。主机名不是 FQDNprovision之后的 DNS 记录会缺/etc/resolv.conf指向外部 DNSKerberos 会一直失败时间和上游差几分钟kinit直接报时钟偏移。三样一起配顺序是先主机名、再时间、最后 DNS# 1. 主机名必须是短名 FQDN 同时在 /etc/hosts 里 hostnamectl set-hostname dc01 cat /etc/hosts EOF 127.0.0.1 localhost 127.0.1.1 dc01.corp.example.local dc01 EOF # 2. 时间同步只保留一个时间服务不要 chrony 和 timesyncd 同时开 timedatectl set-timezone Asia/Shanghai systemctl disable --now systemd-timesyncd 2/dev/null || true systemctl enable --now chrony chronyc sources -v # 3. DNS 回环域控自己就是 DNSresolv.conf 必须指向本机 cat /etc/resolv.conf EOF nameserver 127.0.0.1 search corp.example.local EOFhostnamectl set-hostname只改静态主机名/etc/hosts里那行127.0.1.1是让本机能把 FQDN 解析回自己。很多provision失败其实就出在这一行samba-tool在创建_msdcs记录时需要反查本机名/etc/hosts里没有 FQDN它就找不到。chronyc sources -v里要看的是^*标记有星号才说明当前有生效的同步源。DNS 那一步写成127.0.0.1而不是上游地址是因为 AD DC 的 SRV 记录由自己托管指向外部 DNS 时所有_ldap._tcp查询都会落空。注意chrony和systemd-timesyncd同时启用会互相抢时钟控制权表现为chronyc sources时有时无。两个只能留一个。3. 部署域控从 provision 到 smb.conf 的参数取舍环境准备完之后核心动作是samba-tool domain provision。这个命令的参数看着不多但每一个都决定了后面脚本能不能正常工作。Realm 写错Kerberos 主体全对不上DNS 后端选错samba-tool dns这类命令直接不可用服务单元启错445 端口会被另一个进程占着。这一步我一般会放慢速度在测试机上跑一遍再上生产。3.1 provision 之前先定死四个参数这四个参数没有默认值可依赖必须提前想清楚--realm、--domain、--dns-backend、--adminpass。Realm 用大写域名形式Domain 用短的 NetBIOS 名DNS 后端选SAMBA_INTERNAL由 Samba 自己托管 DNS不依赖外部 BIND管理员密码要符合复杂度要求否则provision会在最后一步拒绝。# 备份已有配置provision 会覆盖 /etc/samba/smb.conf cp -a /etc/samba/smb.conf /etc/samba/smb.conf.bak.$(date %F) 2/dev/null || true samba-tool domain provision \ --realmCORP.EXAMPLE.LOCAL \ --domainCORP \ --server-roledc \ --dns-backendSAMBA_INTERNAL \ --adminpassChangeMe_2024!--realmCORP.EXAMPLE.LOCALKerberos 域全大写脚本里凡是有CORP.EXAMPLE.LOCAL的地方都依赖它。--domainCORPNetBIOS 名登录时CORP\administrator用的就是它长度不要超过 15 个字符。--server-roledc明确这台机器是域控不是成员服务器。脚本里的samba-tool domain系列命令只有在 DC 角色下才有意义。--dns-backendSAMBA_INTERNAL让 Samba 内置 DNS 接管解析省掉再维护一套 BIND 的麻烦如果要接外部 DNS这里换成BIND9_DLZ但同时得改 BIND 配置。--adminpass这个密码后面要在kinit、smbclient里反复用别设成带特殊字符又没人记得住的组合。provision成功后第一件事是把生成的krb5.conf拷到系统路径。Samba 会在/var/lib/samba/private/下生成一份路径和系统默认的不一样不拷过去的话kinit会一直报找不到 realm。# 先备份系统原有配置再覆盖 cp -a /etc/krb5.conf /etc/krb5.conf.bak.$(date %F) 2/dev/null || true cp /var/lib/samba/private/krb5.conf /etc/krb5.conf # 验证 Kerberos 配置是否能拿到票据 kinit administratorCORP.EXAMPLE.LOCAL klistklist输出里能看到krbtgt/CORP.EXAMPLE.LOCALCORP.EXAMPLE.LOCAL这行说明票据链路通了。这一步失败的话后面所有依赖认证的脚本都跑不起来必须先解决再往下走。3.2 smb.conf 只改必要的那几行provision生成的smb.conf已经能用但实际部署时要补几项接口绑定、DNS 转发、日志。不要大改改多了反而会让samba-tool的某些检查失效。[global] workgroup CORP realm CORP.EXAMPLE.LOCAL netbios name DC01 server role active directory domain controller dns forwarder 192.0.2.1 interfaces lo eth0 bind interfaces only yes log level 1 auth:3 log file /var/log/samba/log.%m max log size 1000 [sysvol] path /var/lib/samba/sysvol read only no [netlogon] path /var/lib/samba/sysvol/corp.example.local/scripts read only noserver role active directory domain controller这一行是 DC 模式的开关缺了它samba-ad-dc启动会退化成普通文件服务器。dns forwarder填现场实际可用的上游解析地址。留空也能跑但客户端解析外网域名会失败。interfaces和bind interfaces only只监听回环和内网网卡避免多网卡机器上把服务暴露到不该暴露的网段。这两个参数名要写对interfaces是复数写错会静默失效。log level 1 auth:3认证相关日志提到 3 级排查登录失败时有用全局保持 1 级避免日志量把磁盘吃掉。[sysvol]和[netlogon]两段的path必须和provision生成的路径一致脚本备份的对象就是这两个目录。提示[netlogon]的路径里带的是小写 realmprovision生成的就是小写。手工改成大写会让登录脚本找不到。3.3 服务单元的启用顺序与首启自检Debian 上最容易出问题的一步smbd、nmbd、winbind和samba-ad-dc不能同时跑。前三个是成员服务器/文件服务器模式的组件DC 模式下应该全部停掉只保留samba-ad-dc。# 1. 先停掉非 DC 模式的三个服务并取消开机自启 systemctl disable --now smbd nmbd winbind 2/dev/null || true # 2. 启用 DC 服务单元 systemctl unmask samba-ad-dc systemctl enable samba-ad-dc systemctl start samba-ad-dc # 3. 看状态重点是 Active 和 445 端口 systemctl status samba-ad-dc --no-pager ss -lntp | grep -E :(53|88|389|445)\bsystemctl unmask那行是为了处理一种情况有些镜像里samba-ad-dc被 mask 掉了enable会直接失败报Unit is masked。ss -lntp的输出要能看到 53、88、389、445 四个端口都在监听。如果 445 被别的进程占着systemctl status里会有Address already in use这时候要查是谁占的而不是反复重启服务。如果所在环境是 Jessie 且samba-ad-dc.service不存在会报Unit samba-ad-dc.service not found。这种情况下走 SysV 脚本# Jessie 上部分环境只有 init 脚本 ls -l /etc/init.d/samba-ad-dc 2/dev/null invoke-rc.d samba-ad-dc start启动完立刻做一次本地自检别等到配完脚本才发现域控本身没起来# 域级别与功能级别 samba-tool domain level show # 用户列表能看到 Administrator 就说明数据库正常 samba-tool user list # DNS 记录查询看 _ldap._tcp 的 SRV 记录在不在 samba-tool dns query 127.0.0.1 corp.example.local ALL -U administrator三条命令的输出要能互相对上domain level show给出的 domain 和 forest 功能级别应该一致user list至少有一条 Administratordns query里要能看到_ldap._tcp、_kerberos._tcp这几条 SRV。缺任何一条后面的脚本巡检都会报异常。4. 脚本落地samba-info 巡检与 backup-script 备份 sysvol 的配置到这一步域控已经能跑了接下来是这套资源真正要解决的问题把巡检和备份从手工敲命令变成两条可重复执行的入口。samba-info 负责在出问题之前告诉你哪里不对backup-script 负责在出事之后给你一条退路。两个脚本都是 Shell 写的落地方式一致放到/usr/local/sbin给 0750 权限root 可执行。4.1 samba-info 脚本怎么放、输出怎么读脚本不要放在家目录里跑也不要用sh script.sh的方式调用。放到系统路径下、给可执行权限才能被 cron 和其他脚本稳定引用# 落位与授权 install -o root -g root -m 0750 samba-info.sh /usr/local/sbin/samba-info install -o root -g root -m 0750 backup-script.sh /usr/local/sbin/samba-backup # 检查语法Shell 脚本上线前必做 bash -n /usr/local/sbin/samba-info bash -n /usr/local/sbin/samba-backup # 跑一次把输出落盘 /usr/local/sbin/samba-info /var/log/samba-info.$(date %F).log 21install -m 0750而不是cp加chmod是因为install一步到位设置属主和权限不会出现中间态。bash -n只做语法检查不执行能挡掉大部分因为换行符或引号不配对导致的低级失败。samba-info 的输出通常是分段落的读的时候按这个顺序看服务状态段samba-ad-dc是否 active四个关键端口是否监听。这一段有问题后面的都不用看。域信息段domain level、forest level、DC 列表。用于确认这台机器在域里的角色没变。共享与 sysvol 段共享列表、sysvol 目录大小、最近修改时间。sysvol 大小突然掉一半通常意味着同步或挂载出了问题。认证段kinit是否成功、票据有效期。票据过期时间异常短往往是时间同步出了偏差。脚本输出的价值不在于“有没有报错”而在于趋势。我第一次把它挂进 cron 之后连续看了两周的日志才发现 sysvol 的修改时间每周有一天会停住——那是备份窗口和同步任务撞在一起了。注意samba-info 是只读巡检不要在里面加任何samba-tool的写操作。巡检脚本一旦带副作用出问题时你分不清是环境坏了还是脚本改坏的。4.2 backup-script 的备份对象与一致性备份 sysvol 最容易踩的坑不是路径写错而是在 DC 运行时直接 rsync 整个目录。AD 的 sysvol 底下有 GPO 目录和脚本目录DC 在线时文件在被写入的瞬间被读走备份出来的就是半写状态。这种备份平时看不出来还原时才暴露属于典型的黑匣子问题。先确认手上的samba-tool有没有域备份子命令# 有 online 子命令就优先用它这是官方的一致性备份入口 samba-tool domain backup --help 2/dev/null | head -20如果有online子命令备份主体就用它如果没有老分支上常见退回到“配置 私有目录 sysvol 打包”的组合方案并且明确告诉自己这不是崩溃一致备份只能算应急快照。下面这份是我一般用的写法#!/bin/bash set -euo pipefail umask 077 BACKUP_ROOT${BACKUP_ROOT:-/srv/backup/samba} RETENTION${RETENTION:-7} STAMP$(date %Y%m%d-%H%M) DEST${BACKUP_ROOT}/${STAMP} LOG/var/log/samba-backup.log exec $LOG 21 echo backup start: ${STAMP} mkdir -p $DEST # 1. 配置与私有目录private 里是密钥材料缺了它还原出来的域是废的 rsync -aHAX --numeric-ids /etc/samba/ ${DEST}/etc-samba/ rsync -aHAX --numeric-ids /var/lib/samba/private/ ${DEST}/samba-private/ # 2. sysvol用 tar 抓一份尽量缩短读写窗口 tar -C /var/lib/samba -cpf ${DEST}/sysvol.tar sysvol # 3. 记录版本与时间还原时对号 { samba -V; date -Iseconds; } ${DEST}/version.txt # 4. 归档、清理中间目录 tar -C $BACKUP_ROOT -czf ${BACKUP_ROOT}/samba-${STAMP}.tar.gz $STAMP rm -rf $DEST # 5. 按天清理过期归档 find $BACKUP_ROOT -maxdepth 1 -name samba-*.tar.gz -mtime ${RETENTION} -delete echo backup done: $(du -h ${BACKUP_ROOT}/samba-${STAMP}.tar.gz | cut -f1) 几个参数的含义值得单独说set -euo pipefail任何一条命令失败、任何变量未定义、管道中间环节失败脚本立即退出。备份脚本最怕“错了一半还继续跑”跑完日志显示成功实际少了一半文件。umask 077备份产物里包含密钥材料权限必须是只有 root 能读。rsync -aHAX --numeric-ids-a归档模式-H保留硬链接-A保留 ACL-X保留扩展属性--numeric-ids避免 uid/gid 在目标端被重新映射。sysvol 里的 GPO 权限大量依赖 ACL少一个-A就会在还原后出现权限错乱。tar -C ... -cpf-C切换目录-p保留权限-f指定输出文件。用 tar 而不是 rsync 抓 sysvol是为了把读写窗口压缩到一次遍历。RETENTION默认 7 天用-mtime ${RETENTION}清理注意-mtime的粒度是天别写成小时。提示/var/lib/samba/private/里是域密钥备份归档的权限和存放位置要当作敏感数据对待。别放在 Web 可访问目录也别用匿名共享往外传。4.3 挂进 cron 与日志轮转手工跑通不等于每天都能跑通。cron 环境和登录 shell 的差别是备份脚本最常见的失败来源PATH短、HOME不存在、umask不同。用/etc/cron.d显式写死环境变量比在脚本里猜要可靠。cat /etc/cron.d/samba-backup EOF SHELL/bin/bash PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin MAILTO 0 2 * * * root /usr/local/sbin/samba-backup EOF chmod 0644 /etc/cron.d/samba-backup/etc/cron.d下的文件格式比crontab -e多一个用户字段root那一列不能省。MAILTO是显式关掉邮件避免每台机器都往本地投递。时间放在凌晨 2 点是为了和 sysvol 的同步任务错开具体几点要看你自己环境里同步窗口落在哪。日志不轮转的话一年下来能把/var/log撑满。用 logrotate 加一条cat /etc/logrotate.d/samba-backup EOF /var/log/samba-backup.log { weekly rotate 8 compress missingok notifempty create 0640 root adm } EOFrotate 8配合weekly相当于留两个月。create 0640 root adm让新日志文件继承权限不然轮转之后新文件可能是 0600adm组的监控读不到。配完用logrotate -d /etc/logrotate.d/samba-backup做一次 dry run看解析有没有问题。5. 踩坑记录Debian 上跑 Samba 4 脚本的五个高频翻车点下面这几条都是我在 Jessie 和 Stretch 上真实遇到过、并且在新环境里反复提醒自己检查的。每一条按现象、原因、解决写照着对号入座比自己从日志里猜快得多。5.1 安装与首启阶段现象一systemctl start samba-ad-dc报Address already in use。原因是smbd或nmbd还在跑占着 445 和 139。provision不会自动帮你停掉这些服务装完samba包之后它们默认就是 enabled 状态。解决是先停再启并且取消开机自启否则重启之后又回来systemctl disable --now smbd nmbd winbind ss -lntp | grep :445 systemctl restart samba-ad-dc现象二kinit administrator一直提示Cannot contact any KDC。先查/etc/krb5.conf是不是还指向旧路径或者旧 realm。provision生成的配置在/var/lib/samba/private/krb5.conf系统路径下那份可能还是安装krb5-user时的模板。第二个要查的是/etc/resolv.conf指向外部 DNS 时 KDC 的 SRV 记录查不到。解决顺序是先拷配置、再改 DNS 回环、最后重启服务cp /var/lib/samba/private/krb5.conf /etc/krb5.conf grep -E nameserver|search /etc/resolv.conf kinit administratorCORP.EXAMPLE.LOCAL现象三provision跑到创建 DNS 记录那一步报错退出。多数情况下是主机名不是 FQDN或者/etc/hosts里缺127.0.1.1那行。samba-tool需要反查本机全名来生成_msdcs记录查不到就中断。解决是把主机名和 hosts 一起改好删掉残留的/var/lib/samba/重新provision。注意重新provision会覆盖配置先把smb.conf备份出来。5.2 运行与备份阶段现象四备份文件都在还原之后客户端访问共享报拒绝访问。原因是备份时rsync少了-A或者目标文件系统挂载时没开 ACL 支持。rsync不会在 ACL 丢失时报错它只是默默地不同步。解决分两步备份命令补上-aHAX --numeric-ids还原前先用getfacl抽查一个 GPO 目录对比源和目标的 ACL 是否一致。# 还原演练时的抽查命令 getfacl -p /var/lib/samba/sysvol/corp.example.local/Policies 2/dev/null | head -20现象五手工跑备份脚本正常cron 跑出来是空的。这是最典型的环境差异。cron 的PATH里没有/usr/local/sbinHOME指向/root甚至不存在umask是 022。脚本里调用的samba-tool如果在/usr/local/sbin下就会报 command not found。解决是在/etc/cron.d里显式写PATH和SHELL脚本内部再用绝对路径调用关键命令。排查方法很简单把 cron 那行的命令改成带env /tmp/cron-env.txt的形式跑一次对比登录 shell 的env输出。现象六kinit偶尔成功偶尔失败报Clock skew too great。Kerberos 默认容忍 5 分钟偏差虚拟机挂起恢复、宿主机时间漂移都会触发。查timedatectl的输出看System clock synchronized是不是yes。解决是只保留一个时间服务chrony和systemd-timesyncd二选一然后强制同步一次timedatectl status chronyc makestep chronyc tracking6. 装完怎么验证三条命令加一次恢复演练确认真的跑通装完不等于跑通。域控这类服务的麻烦之处在于它坏的时候往往不是整个挂掉而是某一个环节悄悄失效——认证还能过DNS 少了一条记录共享还能访问sysvol 的 ACL 已经不对。所以验证要分层做从服务层、认证层到数据层每条命令对应一个明确的检查目标。先做服务层和认证层的三件事输出对不上就别急着往下# 1. 域功能级别domain 和 forest 应该一致 samba-tool domain level show # 2. 认证链路klist 里要能看到 krbtgt 票据 kinit administratorCORP.EXAMPLE.LOCAL klist # 3. 共享可达性-U% 表示匿名列举能列出 netlogon 和 sysvol 就说明服务在 smbclient -L localhost -U%domain level show的输出里Domain function level和Forest function level不一致时说明provision时的参数和后来改的smb.conf有冲突。klist里票据的Expires时间应该在 10 小时左右如果只有几分钟回去查时间同步。smbclient -L如果报NT_STATUS_CONNECTION_REFUSED问题在服务层不用再往下看数据层。数据层的验证靠一次真实的恢复演练这一步不能省。把最近一份备份解开用getfacl和ls对比源目录检查项命令期望结果归档完整性tar -tzf samba-*.tar.gz | head能列出目录结构无unexpected EOFsysvol 文件数tar -tf sysvol.tar | wc -l与源目录find计数一致ACL 保留getfacl -p 还原路径/Policies能看到group:BUILTIN\administrators之类条目版本对号cat version.txtSamba 版本与当前机器一致或明确记录差异# 恢复演练解到临时目录只比对不覆盖 mkdir -p /tmp/restore-test tar -C /tmp/restore-test -xzf /srv/backup/samba/samba-20240101-0200.tar.gz # 比对 sysvol 条目数两个数字应该一样 tar -tf /tmp/restore-test/*/sysvol.tar | wc -l find /var/lib/samba/sysvol -mindepth 1 | wc -l两个数字对不上就说明备份抓取的那一刻有文件正在写入或者tar的-p没生效导致权限差异。这时候要做的不是重跑备份而是回去看备份窗口和同步任务的时间是否重叠。注意恢复演练永远解到临时目录不要直接往/var/lib/samba/上覆盖。演练的目的是验证备份可用不是制造第二次事故。从那以后我每次新装一台 DC都会在交付前强制走一遍这三条命令加一次解包比对不管当天多晚。因为域控这种东西平时不出声出事就是全公司登不上。这套 samba-info 加 backup-script 的组合价值不在于代码有多少行而在于它把“巡检”和“有退路”变成了两条每天自动执行的命令。希望帮到你。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询