1) можно использовать нормальную
систему контроля версий, например система -
git, есть готовый сервис
GitHub
посмотрите инфу в сети, видео на ютюбе, все станет понятно как и что работает.
2) можно самому написать
скрипты например на
PowerShell, что-то типа этого:
$BackupPath = "D:\SomeBackupPath"
$SourcePath="C:\Some\Source\Path"
$DestinationPath="C:\Some\Destionation\Path"
$7zip="C:\Program Files\7-Zip\7z.exe"
$SourceFiles = ( Get-ChildItem $SourcePath -Recurse -Force | where {$_.Mode -notlike 'd*'} | foreach {$_.FullName.Replace("$SourcePath\","") } )
$DestinationFiles = ( Get-ChildItem $DestinationPath -Recurse -Force | where {$_.Mode -notlike 'd*'} | foreach {$_.FullName.Replace("$DestinationPath\","") } )
$ToPackFiles = @()
$SourceFiles | foreach { if ($DestinationFiles -match "^"+ $_.Replace("\","\\") +"$") { $ToPackFiles += "'$_'" } }
cd $DestinationPath
if ($ToPackFiles) { $ToPackFiles | & $7zip a -mx9 ("$BackupPath\"+(Get-Date -Format "yyyy-MM-dd_HHmmss")+".7z") }
Copy-Item "$SourcePath\*" -Recurse $DestinationPath -Force -PassThru | foreach { Write-Host $_.FullName }
выложил на GitHub -
BackupAndCopy.ps1
скрипт берет файлы из SourcePath сравнивает с DestinationPath, если есть совпадающие, то пакует совпадающие файлы из DestinationPath в 7z архив в папку BackupPath (имя файла дата+время)
после чего копирует файлы из SourcePath в DestinationPath
PS: в системе должен быть установлен 7zip , указать к нему путь в переменной $7zip
Upd:
Так же посмотрите
ZPAQ, он поддерживает версионность файлов, т.е. внутри одного архива можно сохранять например 10 копий одного и того же файла с разными датами изменения.
Upd2:
Обновил скрипт, исправил некоторые ошибки (сравнение скрытых файлов, упаковка лишних файлов)