Не имейте опыта с rsync в реальном времени, хотя, не, комментируют - также. но от того, что я считал и услышал, это - лучшая идея.
Но, какова точная проблема, которую Вы пытаетесь решить? Вы, кажется, пытаетесь использовать один лучший инструмент для нескольких проблем. Ваше сообщение подсказывает, что Вы предпочли бы управление версиями, но главным образом заинтересованный синхронизацией и резервным копированием. Предполагаю здесь (возражайте моделировать? :-P), но я думаю, что Вам нужна комбинация обоих в различных целях.
Oldcmp
хорошо известен тем, что он делает, и отлично работает при первой и периодической очистке.
Если со временем вам потребуется автоматизированный процесс, вы можете использовать Powershell (настоятельно рекомендуется), чтобы написать для этого автоматизированный процесс. Например, наш текущий сценарий делает следующее:
lastLogonTimeStamp
с использованием get-ADcomputer
Кроме того, мы используем флаг ProtectFromAccidentialDeletion для учетной записи, если мы не хотим, чтобы она была удалена.
Не существует никакого метода, который мог бы отличить машину, которая ушла и больше не существует, и машину, которая стоит на полке и не используется, поэтому используйте OldComp, чтобы сделать уборку и устранение разовых вещей, если и когда они появятся.
Почему не PowerShell?
$Computers = ([ADSISearcher]"(&(objectCategory=computer)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))").FindAll()
$Computers = $Computers | ForEach { $_.Path }
$Age = $(Get-Date).AddDays(-90)
$StaleComputerAccounts = @()
$NeverUsedComputerAccounts = @()
ForEach ($Computer in $Computers) {
$ComputerObj = [ADSI]$Computer
if ($ComputerObj.lastLogon) {
$LastLogon = [DateTime]::FromFileTime($ComputerObj.ConvertLargeIntegerToInt64($ComputerObj.lastlogon[0]))
if ( $LastLogon -lt $Age ) {
$StaleComputerAccounts += $Computer
}
}
else {
$NeverUsedComputerAccounts += $Computer
}
}
У вас должен получиться список из $ StaleComputerAccounts
и $ NeverUsedComputerAccounts
, с которыми затем можно будет работать с другими PowerShell. Мне нравится делать что-то вроде этого:
$TargetOU = "OU=Computers,OU=Disabled,OU=,DC=CONTOSO,DC=com"
$OUObj = [ADSI]"LDAP://$TargetOU"
ForEach ($Computer in $StaleComputerAccounts) {
$ComputerObj = [ADSI]$Computer
$ComputerObj.PSBase.MoveTo($OUObj)
$ComputerObj.InvokeSet("accountDisabled", $True)
$ComputerObj.SetInfo()
}
Нет волшебного способа программно различить компьютер, который был неправильно списан (никто не удалил его из Active Directory, когда он был отключен), и ноутбук, сидящий на столе какого-то руководителя. Если вы хотите действовать осторожно, вы можете просто отключить учетную запись и отправить ее в определенное подразделение, как я.