@karkir72

Как в Windows сделать бэкап файлов, копируемых с заменой?

Из одной папки в другую надо скопировать файлы с заменой. Как автоматически можно сделать копии только тех файлов, которые будут заменены? Желательно, чтобы структура папок была сохранена, чтобы при необходимости копировать их с заменой обратно.
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
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:
Обновил скрипт, исправил некоторые ошибки (сравнение скрытых файлов, упаковка лишних файлов)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Diman89
@Diman89
Total Commander поможет - при совпадении имен спросит что сделать, и ему можно будет ответить "автоматически переименовывать имеющиеся файлы"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы