Rsync копіювання з сервера на локальний Windows-ПК
Читач сайту описує свою цікаву проблему:
Що таке rsync?
Як зробити синхронізацію папки з Linux на Windows?
Для того щоб відправити файли у windows за допомогою rsync найкращий спосіб - це змонтувати файлову систему локального windows-комп'ютера на сервер через ssh-тунель по smb. Тоді не потрібно встановлювати rsync на Windows і це вирішує проблему з доступом між сервером і домашнім комп'ютером.
Для цього необхідно підключаючись до сервера з локального комп'ютера зробити прокидання R-типу. Прокидати потрібно localhost:445. Потім, щоб у системі на сервері було встановлено пакет cifs-utils. Розшарюєте на локальному комп'ютері потрібну папку, потім створюєте точку монтування на сервері і монтуєте туди вже з localhost. До речі, на нашому сайті є генератор-скриптів для бекапів сайту, і в ньому реалізовано генерацію такого скрипту.
Приклад скрипта для синхронізації папок
start /b d:plink.exe -pw rootpassword [email protected] -N -R 445:localhost:445 d:plink.exe -pw rootpassword [email protected] -C "mkdir /tmp/ win&mount -t cifs -o rw,nounix,soft,intr,username=user,password=windowspass //localhost/backup /tmp/win" d:plink.exe -pw rootpassword root@example. com -C "rsync -a --no-p --no-o --no-o --no-t /var/www/example.com/ /tmp/win & &um umount /tmp/win& &rmdir /tmp/win" taskkill /f /im plink.exe
У першому рядку запускаємо у фоні програму plink.exe (консольний ssh-клієнт для Windows). Підключаємось на віддалений сервер example.com та тунелюємо порт 445 з локальної машини на lo-інтерфейс сервера. Після підключення по ssh сервер буде «думати», що у нього на localhost:445 є windows-куляабо запущено smb, сервер.
start /b d:plink.exe -pw rootpassword [email protected] -N -R 445:localhost:445
Тут ми створюємо точку монтування і монтуємо розшаровану папку в створену точку. Після цього на сервері у створеній точці буде доступна файлова система локального комп'ютера. Сервер при цьому «думає», що ця папка знаходиться фізично на ньому самому. Відповідно він може виконувати будь-які операції над нею, запис та видалення файлів, так, начебто це його власна папка.
d:plink.exe -pw rootpassword [email protected] -C "mkdir /tmp/win&mount -t cifs -o rw,nounix,soft,intr,username=user,password=windowspass //localhost/backup /tmp/win"
Ну і тут ми виконуємо безпосередньо синхронізацію папки сайту до цієї папки. Всі файли надсилаються на локальний комп'ютер, за це відповідає монтування кулі та тунель. Команді rsync передаємо опції не зберігати атрибути файлів - власника та права, оскільки windows все одно нічого не знає про такі атрибути і не вміє з ними працювати. Після синхронізації відмонтуємо локальну кулю від сервера.
d:plink.exe -pw rootpassword [email protected] -C "rsync -a --no-p --no-o --no-o --no-t /var/www/example.com/ /tmp /win & umount /tmp/win&rmdir /tmp/win"
Тут ми «вбиваємо» SSH-сесію, запущену на тлі на самому початку.
taskkill /f /im plink.exe
Якщо ви зрозумієте, як це працює, то зможете аналогічно використовувати це на своїх серверах. Або просто зробіть скрипт через наш сервіс (вкладка rsync для бекапу файлів) зі своїми даними та запустіть його. Перед цим установіть cifs-utils на сервер.