Синхронізація папок в windows 7 своїми руками, світ пк, видавництво «відкриті системи»
У «сімку» включений досить зручний PowerShell, що допомагає автоматизувати більшість дій, наприклад синхронізувати вміст двох папок. Дана процедура досить проста: потрібно прочитати список вихідних і результуючих файлів і каталогів, порівняти їх і скопіювати змінилися об'єкти.
ІТ-інфраструктура для вашого підприємства
Читання каталогу здійснюється по команді get-childitem. Щоб враховувалися вкладені папки, до неї додається опція -recurse, а щоб відрізняти файли від папок, використовується функція PSIsContainer (). Якщо вона повертає значення True, то елемент - папка, в іншому випадку - звичайний файл:
$ Srcfolder = get-childitem $ source -recurse | where-object
$ Srcfiles = get-childitem $ source -recurse | where-object
Для вирішення нашої нескладного завдання будуть потрібні чотири списки: перші два містять вихідні файли і папки, а два залишилися - підсумкові файли і папки. Процес синхронізації зводиться до перебору цих списків і копіювання файлів з однієї папки в іншу.

У першому циклі перевіряється, чи існують в папці для резервного зберігання вихідні каталоги, і якщо їх ще немає, то вони створюються за допомогою команди new-item.
foreach ($ folder in $ srcfolders)
$ Srcpath = $ source -replace ¨ \ ¨, ¨ \ ¨ -replace ¨: ¨, ¨: ¨
$ Dstpath = $ folder.fullname -replace $ srcpath, $ destination
if (! (test-path $ dstpath))
¨Созданіе папки '$ dstpath'.¨
new-item $ dstpath -type directory | out-null
Дуже схожий цикл виконується і при порівнянні результуючого і вихідного списку папок, тим самим створюється точна структура вкладених папок. Два інших циклу обробляють файли: перший копіює оновлені об'єкти з вихідної в результуючу папку, другий - відсутні у вихідному каталозі - з підсумкового. Дізнатися, оновився чи файл, можна по його хеш-коду. Зауважимо, що, оскільки файли відкриваються в режимі "тільки читання», вони не блокуються від використання іншими програмами. Втім, за правилами хорошого тону файл після закінчення обчислення хеш-коду необхідно закривати функцією Close ():
$ Md5 = new-object system.security.cryptography.md5cryptoserviceprovider
$ Fs = new-object system.io.filestream ($ file, $ mode, $ access)
$ Hash = $ md5.computehash ($ fs) # хеш-код файлу
if (! (test-path $ destination))
new-item $ destination -type directory -force | out-null
Отже, цей скрипт допоможе скопіювати відсутні на флешці фотографії, таблиці, текстові документи і ін. Не витрачаючи час на ручне пофайлово порівняння. Щоб використовувати його, на Робочому столі можна створити нескладний BAT-файл, вказавши в ньому команду виду powershell.backup.ps1 c: filessrc d: backup (шлях до скрипту зазвичай потрібно приводити цілком). Надалі нескладно синхронізувати папки, клацаючи на цьому пакетному файлі. Нагадаємо, що дозволяє виконання непідписаних скриптів команда Set-ExecutionPolicy RemoteSigned, виконана від імені «Адміністратора».
Зберігати копії важливих файлів в абсолютно незахищеному вигляді, мабуть, не зовсім вірно з точки зору безпеки. Система Windows 7, не дивлячись на всі зусилля Microsoft, залишається вразливою до вірусів, хробаків і іншим зловредів. До документів, які постійно лежать, по суті, у відкритому доступі, вони добираються без проблем. На щастя, в операційній системі з'явилося вельми корисний засіб - віртуальні диски, які монтуються і відключаються на льоту. Вони підходять і для резервування будь-яких важливих файлів, звертатися до яких може обмежене число користувачів.
Останній спосіб цікавий тим, що копіювати допускається в певну папку незалежно від того, де знаходиться віртуальний тому. Отмонтировать віртуальний тому в утиліті для управління комп'ютером, можна бути впевненим, що до самої останньої копії важливих документів ні віруси, ні цікаві користувачі не доберуться. Сам віртуальний тому, т. Е. Файл з розширенням VHD, можна скопіювати на резервний носій. Додаткова міра безпеки - шифрування віртуального томи, доступне за допомогою BitLocker користувачам максимальної і бізнес-версії Windows 7. При підключенні такого захищеного томи (а його можна використовувати і на інших ПК, причому навіть там, де BitLocker не встановлено) Windows попросить вказати логін і пароль.