Задача:
Резервное копирование файлов с windows сервера на Linux сервер выступающий в роли хранилища.
Инструменты:
Для windows:
CopSSH_3.1.4
cwRsyncServer_4.0.3
Для Linux:
rsyncd
ssh
Цель:
Использовать пакет rsync и ssh для организации безопасного тунелля передачи данных в ethernet сети между двумя серверами с разной ОС.
Инструкция:
На windows сервере:
Устанавливаем пакет CopSSH на windows сервер (жмем далее-далее).
Останавливаем службу OpenSSHD, если запущена, иначе не получится поставить пакет cwRsyncServer (связано с тем, что создается эмулируемая линукс среда и при работе службы OpenSSHD, используется библиотека необходимая для установки cwRsyncServer) — вылезет ошибка.
Ставим cwRsyncServer (жмем далее-далее).
В службах меняем запуск службы RsyncServer с ручного запуска на автоматический.
Проверяем службы OpenSSHD и RsyncServer запустив их. Если запустились — все хорошо, останавливаем их.
Если вылезет ошибка 1069 «Вход невозможен», то поменяйте пароли пользователям CWRSYNC и COPSSH в «Администрирование-Управление данных компьютером-Пользователи». Такое случается, если вы пере устанавливаете эти программы.
Затем, введите новые пароли в свойствах служб OpenSSHD и RsyncServer во вкладке «Вход в систему». Теперь службы должны запуститься.
Создайте нового пользователя (у меня это RSBService) и добавьте его в группу Администраторы.
Добавим пользователя RSBService в пользователи ssh. Выполните: Пуск-Программы-CopSSH-Activate User.
Там выбираем или вписываем имя нашего пользователя и кликаем «Далее»
В passphrase можете ввести что угодно.
Отредактируем конфиг rsyncd.conf
Для этого выполните: Пуск-Программы-cwRsyncServer-rsyncd.conf.
Там все довольно тривиально и идентично настройкам для unix rsync.
Распишу только стандартные опции.
use chroot = false # Использовать не только диск С
strict modes = false # Проверка файла с паролем. Отключена так как его не использую.
hosts allow = 192.18.0.34 # Откуда подключаться разрешено по rsync
log file = rsyncd.log # Лог файл
# Module definitions
# Remember cygwin naming conventions: c:\work becomes /cygwin/c/work
#
[backup] # Название модуля
path = /cygdrive/c/_BackUp # Путь до папки, путь всегда начинается с cygdrive
read only = yes # разрешено только чтение
transfer logging = yes # логировать перемещение
Все. Теперь запустим службы OpenSSHD и RsyncServer.
На windows сервера работы закончили.
На Linux сервере:
Создадим ключ для беспорольной авторизации на windows сервере под пользователем RSBService:
ssh-keygen -t rsa -b 2048 -N '' # Создаем ключ rsa длиной 2048 байт без парольной фразы.
Скопируем публичный ключ на windows сервер:
ssh-copy-id RSBService@ip-адрес сервера
У вас запросят пароль на пользователя RSBService. Введите его.
Теперь проверим беспарольный вход:
ssh RSBService@ip-адрес сервера
Установите демон rsyncd на Linux сервер.
С помощью следующей команды мы скопируем данные с windows сервера.
rsync -a --delete RSBService@ip-адрес::backup /назначение куда класть данные
PROFIT
Использованные материалы:
Сайт производителя утилиты.
Здесь описано как запустить cwRsync в качестве демона, если вы не найдете версию 4.0.3, так как в 4.0.5 нет отдельного серверного пакета.
Запуск в качестве службы
3 видео мануала, но с использованием windows в качестве сервера и клиента.
1я часть.
2я часть.
3я часть.
Ответ на:
комментарий
от gutaper
Сейчас пользуюсь. Проблема в том, что систему нужно выключать при бэкапе. Или я чего-то не знаю?
Enot
()
автор топика
- Показать ответ
- Ссылка
Ответ на:
комментарий
от constin
Банально, но факт: универсального решения нет, есть набор оптимальных подходов для данного конкретного окружения.
Например: раз в неделю делаем холодную копию всего сервера, плюс ежесуточное РК базы данных (если таковая используется), строго по вендорским рекомендациям к ней.
Ну и исходя из этого, пошаговый отработанный план восстановления.
NDfan ★
()
Последнее исправление: NDfan
(всего
исправлений: 1)
- Ссылка
Ответ на:
комментарий
от Enot
В том то и проблема, что это не виртуалки
не изобретай велосипедов, переводи на виртуализацию. сделать слепок разделов и перенести на KVM винду не так сложно, те совсем не сложно
а с linux еще проще
constin ★★★★
()
- Ссылка
Ответ на:
комментарий
от gutaper
Для клонеззилы нужно останавливать систему.
Но хорошая штука. Даже раиды копирует.
☆☆☆
()
- Ссылка
Ответ на:
комментарий
от anonymous
Я ждал и ожидал насчет DD ответа.
Так вот: клонезила упаковывает. 1 террабайт в 230 Gb
У вас есть под рукой выносной диск?
☆☆☆
()
Последнее исправление: Bootmen
(всего
исправлений: 1)
- Показать ответы
- Ссылка
Ответ на:
комментарий
от Bootmen
Для серьёзных людей и контор диск под рукой не нужен, они держат бэкапы на отдельном специально выделенном для этого железе.
А для домашнего использования все бэкапы в интернете уже есть, на порнохабе например)))))
piwww ★★★★
()
- Показать ответы
- Ссылка
Ответ на:
комментарий
от Bootmen
Ответ на:
комментарий
от anonymous
Аноним ты в не той теме. Заблудился бедняга?
☆☆☆
()
Последнее исправление: Bootmen
(всего
исправлений: 1)
- Ссылка
Ответ на:
комментарий
от piwww
на порнохабе наприме
Смешно. Для ламера.
☆☆☆
()
- Ссылка
Ответ на:
комментарий
от piwww
там недавно всё выпилили что партии не угодно. Так что я бы на него не рассчитывал.
anonymous
()
- Ссылка
rdiff-backup?
Ну или bareos.
DALDON ★★★★★
()
Последнее исправление: DALDON
(всего
исправлений: 1)
- Ссылка
Можно использовать расшаренный на linux/windows раздел — тогда нужно будет бэкапить только его каким-то одним средством. В Windows уже давно есть драйвера даже для редких файловых систем linux.
Если речь про online бэкап, то следует выбирать такой сервис, где есть кросплатформенный клиент.
mxfm ★★
()
- Показать ответы
- Ссылка
Ответ на:
комментарий
от mxfm
В этом то и проблема. Не могу найти сервис с нормальным кросплатформенным клиентом
Enot
()
автор топика
- Показать ответ
- Ссылка
Ответ на:
комментарий
от Enot
Я использую Spideroak, выбирал по объёму места и цене. Правда у меня особенность — все данные храняться на машине с linux. Поэтому как работает клиент под windows не скажу — мне оно не нужно.
mxfm ★★
()
- Ссылка
dd c линукс-лайвусб
burato ★★★★★
()
- Ссылка
Ответ на:
комментарий
от Enot
dd линукс можно на ходу снять
burato ★★★★★
()
- Ссылка
Ответ на:
комментарий
от Bootmen
Так вот: клонезила упаковывает. 1 террабайт в 230 Gb У вас есть под рукой выносной диск?
Если это к тому, что dd не умеет сжимать, никто не мешает прогонять его через компрессор, тот же zstd тут как нельзя кстати.
P.S. Не обязательно использовать именно dd, можно, например, pv или даже cat.
SM5T001 ★
()
Последнее исправление: SM5T001
(всего
исправлений: 1)
- Ссылка
Ответ на:
комментарий
от anonymous
кстати, как ни странно, но есть
mumpster ★★★★★
()
- Ссылка
Ответ на:
комментарий
от mxfm
сливал вимом с венды на линукс (дома).
коллега делал тоже самое на работе с венды на вцентнер шару.
mumpster ★★★★★
()
- Ссылка
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
From the world of “why would anyone ever bother to do this?” comes a new approach to backing up your favourite Windows 10 computer! OK so why am I even doing this? I guess the answer to that question is really “just to see if I could.” It’s not the best answer but not everything needs a practical reason right?
So how does one go about using the awesome rsync utility to perform a Windows backup? Well first off you’ll need to enable the Windows Subsystem for Linux on your Windows 10 computer. There’s some documentation here from Microsoft but essentially you just need to enable the Feature and then go into the Windows Store, search for your favourite supported distribution, and click the Get button. Once the installation has finished you should launch bash and create a user account. Depending on the distribution you chose rsync may not be installed already so you may need to add it as well.
The actual backup process is really easy from that point. When you launch bash it will automatically mount your Windows drives under /mnt/, so for example the C:\ drive gets mounted as /mnt/c. Therefore if you wanted to backup the whole C:\ drive to an external drive you plugged in that showed up as E:\ in Windows you could simply run something like:
rsync -rv /mnt/c /mnt/e
Now while this should more or less work it will result in a load of errors as rsync doesn’t know how to or isn’t allowed to access a bunch of the special directories and files in Windows.
Also note that I’m only using the -r option above instead of the more “traditional” -a option. This is because of an incompatibility between the linux and Windows file permissions, so it isn’t able to correctly preserve them anyway. There are other options you may want to pass rsync as well, for instance the –delete option which will remove previously copied files on the destination drive if they are subsequently deleted from the source drive to keep them in sync.
How about an example?
For the purposes of an example backup let’s say I just wanted to copy the files under the USER (substitute your username here!) directory, excluding some of the nonsense directories I didn’t need. And let’s assume I want the files to end up on that E:\ drive as before. Oh and let’s also assume I want to run this backup on a schedule. Here’s how I would set it up:
1) Create a script to store our rsync commands
Technically you don’t need to do this but I find it easier to maintain this way. I created a file in C:\Users\USER\rsyncbackup\ called rsyncbackup.sh. The reason I placed it under my Windows user directory, and not within the linux user directory, was simply one of preference but this way the script itself will also be part of the backup. Finally I placed the following in it:
#!/bin/bash rsync -rv --delete --exclude-from '/mnt/c/Users/USER/rsyncbackup/rsyncbackup.exclude' --progress /mnt/c/Users/USER /mnt/e
Be careful when saving files in Windows that you use the UNIX line endings and not the Windows line endings option, otherwise rsync may have issues with it. As you can see from above this rsync command is referencing a file call rsyncbackup.exclude. This is the file where I will place directories, files and wildcards for things I don’t want rsync to bother with. Here is what that file could look like:
*.lnk *.url AppData Application Data Cookies desktop.ini Documents/My Music Documents/My Pictures Documents/My Videos IntelGraphicsProfiles Local Settings MicrosoftEdgeBackups My Documents NetHood NTUSER.DAT* ntuser* PrintHood Recent Searches SendTo Start Menu Templates
2) Try it out!
Now we can try to see if this will work. Open up a Windows command prompt (e.g. cmd.exe) and run the following:
bash -c '/mnt/c/Users/USER/rsyncbackup/rsyncbackup.sh'
If it all looks good then we can move onto the next step of scheduling it.
3) Schedule the backup
This is where you might be thinking
Well if we’re already using the Windows Subsystem for Linux why don’t we just schedule it with cron?
The answer is that from my testing it doesn’t appear as though Windows starts the Subsystem automatically after a restart. So if that never gets started, cron never runs and your backup never happens. Instead what we’ll do is simply use good old Windows Task Scheduler to get the job done.
Create a new task, schedule it accordingly and place the command you used in cmd.exe above as the Action. Feel free to run the task to test and confirm the results!
4) Other cool tricks
What’s neat about doing a backup this way is that you get additional access to all of the cool Linux commands and functionality as well. For example what if you wanted to do the same backup above, but weren’t sure what drive letter your external drive would show up under? Well an easy solution would be to place a uniquely named text file on your backup drive, something like “THIS_IS_THE_BACKUP_DRIVE.txt“, and use bash to find it for you!
#!/bin/bash BACKUPDIR="${find /mnt -type d -name "c" -prune -o -type f -name "THIS_IS_THE_BACKUP_DRIVE.txt" -print 2>/dev/null}" BACKUPDIR="${BACKUPDIR/THIS_IS_THE_BACKUP_DRIVE.txt/BACKUP}" rsync -rv --delete --exclude-from '/mnt/c/Users/USER/rsyncbackup/rsyncbackup.exclude' --progress /mnt/c/Users/USER $BACKUPDIR
How does this work?
BACKUPDIR="${find /mnt -type d -name "c" -prune -o -type f -name "THIS_IS_THE_BACKUP_DRIVE.txt" -print 2>/dev/null}"
This first looks in all of the mounted Windows drives (everything under /mnt), excluding directories that have a “c” in the name (e.g. the C:\ drive) for a file called “THIS_IS_THE_BACKUP_DRIVE.txt” and stores the path to that file in the variable BACKUPDIR. I added 2>/dev/null in order to omit any errors, such as “Permission denied” that rsync may echo out. So for example if the backup drive was mounted under E:\ then my variable BACKUPDIR would contain the text “/mnt/e/THIS_IS_THE_BACKUP_DRIVE.txt”
BACKUPDIR="${BACKUPDIR/THIS_IS_THE_BACKUP_DRIVE.txt/BACKUP}"
Next it replaces the text “THIS_IS_THE_BACKUP_DRIVE.txt” in the variable with the text “BACKUP” because I want my backup files to end up in a folder on the drive called BACKUP (e.g. E:\BACKUP).
Finally it runs the normal rsync command put sets the destination directory to the contents of our variable above.
rsync -rv --delete --exclude-from '/mnt/c/Users/USER/rsyncbackup/rsyncbackup.exclude' --progress /mnt/c/Users/USER $BACKUPDIR
Neat right? OK but what if I want to back up my computer over the internet using ssh? Well we can certainly do that too! To make this easier I’m going to pre-setup some ssh keys so we don’t need to worry about providing a password. This will make scheduling the backup easier.
First off in bash on Windows you’ll want to generate some ssh keys:
ssh-keygen
Make sure to just hit enter when prompted for the password so that the keys aren’t password protected. Next you’ll want to copy those keys to your remote machine. I find the ssh-copy-id command especially easy for this:
ssh-copy-id -i ~/.ssh/id_rsa.pub x.x.x.x
Where x.x.x.x is the IP address of your remote machine. If that was successful you should be able to ssh to the remote machine without providing a password:
ssh x.x.x.x
Note that it’s perfectly fine for your linux username to not match your Windows username, you just need to be sure to explicitly provide the correct username as part of the rsync command below. If you were able to ssh then we just need to setup our backup script to use the remote machine as the destination:
#!/bin/bash rsync -rv --delete --exclude-from '/mnt/c/Users/USER/rsyncbackup/rsyncbackup.exclude' -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /mnt/c/Users/USER USER@x.x.x.x:/home/USER/BACKUP
Running the script now will automatically connect to the remote machine at x.x.x.x using the linux user USER and run the backup, placing the files under the USER home directory in a folder called BACKUP. If your remote machine listens for ssh connections on a different port you can specify that too using the -p option right after the ssh portion, so something like:
rsync -rv --delete --exclude-from '/mnt/c/Users/USER/rsyncbackup/rsyncbackup.exclude' -e "ssh -p 1234 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /mnt/c/Users/USER USER@x.x.x.x:/home/USER/BACKUP
Anyway I hope you found this information interesting if not helpful. Maybe you too could setup your very own convoluted backup system!
This post, re-published here with permission, was originally published on my personal site here.
В этом сообщение я представлю вам BackupPC, программный кросс-платформенный бэкап сервер, который через сеть может вытянуть резервное копирование клиентов Linux, Windows и MacOS. В BackupPC добавлено ряд функций, которые делают резервное копированиче чуть ли не приятной вещью.
BackupPC поставляется с надёжным веб-интерфейсом, который позволяет вам собирать и управлять централизованным образом резервными копированиями других удалённых хостов. Используя веб-интерфейс, вы можете изучить файлы журналов и конфигурационные файлы, запустить/отменить/настроить расписания резервных копирований удалённых хостов и визуализировать текущий статус задач резервного копирования. Вы также можете просматривать архивные файлы и очень просто восстанавливать отдельные файлы или всё полностью из архивов бэкапов. Для восстановления индивидуальных отдельных файлов, вы можете загружать их из предыдущих бэкапов прямо в веб-интерфейсе. Если этого недостаточно, не требуется специальной программы на стороне клиента для клиентских хостов. На Windows клиентах используется родной протокол SMB, в то время как на *nix клиентах вы будете использовать rsync или tar через SSH, RSH или NFS.
Установка BackupPC
На Debian, Ubuntu, Mint и их производных запустите следующую команду.
# aptitude install backuppc
На Fedora используйте команду yum command. Обратите внимание, что имя пакета регистрозависимое.
# yum install BackupPC
На CentOS/RHEL 6 сначала включите репозиторий EPEL. На CentOS/RHEL 7 включите вместо репозиторий Nux Dextop. Затем продолжайте с командой yum:
# yum install BackupPC
Далее команды на разных дистрибутивах Linux идентичны, пользователи Debian, Ubuntu, Mint и их производных не забывайте ставить sudo перед каждой командой.
Как обычно, обе системы управления пакетами будут заботиться об автоматическом разрешении зависимостей. В дополнение как часть установочного процесса, вас могут спросить настроить почтовый сервер, настроить или перенастроить веб-сервер, который будет использован для графического пользовательского интерфейса. Я не стал ничего настраивать в почтовом сервере (чтобы не удлинять инструкцию). Следующие скриншоты из системы Debian:
Сделайте ваш выбор нажав на пробел и затем перейдите к Ок, используя кнопку [Tab], и нажмите [Enter].
Вам будет представлена следующий экран, информирующий вас, что администраторский пользовательский аккаунт ‘backuppc’ с соответствующим ему паролем (который, по желанию, может быть изменён), был создан для управления BackupPC. Обратите внимание, что пользовательский аккаунт HTTP и обычный Linux аккаунт с одинаковым именем ‘backuppc’ будут созданы с идентичным паролем. Первый нужен для получения доступа в защищённый веб-интерфейс BackupPC, в то время как второй нужен для выполнения резервного копирования используя rsync через SSH.
Вы можете изменить пароль по умолчанию для HTTP пользователя ‘backuppc’ следующей командой:
htpasswd /etc/backuppc/htpasswd backuppc
Для изменения обычного ‘backuppc’ пользовательского аккаунта Linux, используйте команду passwd.
# passwd backuppc
Обратите внимание, что установочный процесс автоматически создаст веб и программный конфигурационные файлы.
Запуск BackupPC и настройка Backups
Чтобы начать, откройте окно браузера по адресу http://<доменное имя или IP адрес сервера>/backuppc/. Когда появится окно запроса, введите данные HTTP пользователя, которые были предоставлены вам ранее. Если авторизация успешна, вас перекинет на главную страницу веб-интерфейса.
Наиболее вероятно, первое, что вам нужно сделать, это добавить хосты клиентов для резервного копирования. Перейдите в «Edit Hosts» (редактирвоание хостов) в панеле задач. Мы добавим два клиентских хоста:
- Host #1: CentOS 7 [IP 192.168.0.17]
- Host #2: Windows 7 [IP 192.168.0.103]
Мы будем делать резервное копирование CentOS, используя rsync через SSH, и хоста Windows, используя SMB. До выполнения резервного копирования, нам нужно настроить основанную на ключе аутентификацию на наш хост CentOS и сделать доступной по сети (расшарить) каталог на Windows машине.
Вот инструкция для настройки аутентификации, основанной на ключе, для удалённого хоста CentOS. Мы создаём пользователю ‘backuppc’ пару ключей RSA и переносим публичный ключ в аккаунт рута хоста CentOS.
# usermod -s /bin/bash backuppc # su - backuppc # ssh-keygen -t rsa # ssh-copy-id root@192.168.0.17
Когда спросят, напечатайте yes и введите пароль рута для 192.168.0.17.
Вам понадобиться рут доступ для удалённого хоста CentOS для получения доступа записи на всю файловую систему в случае восстановления бэкапа файлов или каталогов, собственником которых является рут.
Когда хосты CentOS и Windows готовы, добавьте их в BackupPC используя веб-интерфейс:
Следующий шаг состоит из изменения настроек резервного копирования каждого хоста:
Следующее изображение показывает настройку для резервного копирования на Windows машине:
А следующий скриншот показывает настройку резервного копирования для CentOS:
Запуск резервного копирования
Для запуска каждого резервного копирования, перейдите к настройкам каждого хоста, а затем кликните «Start Full Backup»:
В любое время, вы можете просмотреть статус процесса, кликнув на home хоста, как показано в изображении выше. Если это по каким-либо причинам не получилось, также появится ссылка на страницу с сообщением ошибки (ошибок) в меню хоста. Когда резервное копирвоание завершено успешно, на сервере создаётся каталог с названием хоста или IP адресом в /var/lib/backuppc/pc:
Вы можете переходить по каталогам в поисках файлов, используя командную строку, но есть и более простой способ обозревать эти файлы и восстанавливать их.
Восстановление резервных копий
Для просмотра сохранённых файлов, переходите в раздел «Browse backups», что находится в главном меню хоста. Вы можете визуализировать каталоги и файлы с первого взгляда и выбрать те, которые вы хотите восстановить. Как вариант, вы можете кликнуть по файлу и открыть его, используя программу по умолчанию, или кликните правой кнопкой и выберете Сохранить ссылку, для его загрузки на машину, где вы работаете в данный момент:
Если хотите, то можете загрузить файлы zip или tar, заключающие содержание резеврных копий или просто восстановите файл (файлы) на прежнее место:
Заключение
Говорят «Чем проще — тем лучше», и именно это предлагает BackupPC. В BackupPC вы найдёте не только инструмент для резервного копирования, но также разносторонний интерфейс для управления вашими резервными копиями нескольких операционных систем без необходимости приложения на стороне клиента. Я уверен, что более чем достаточная причина, чтобы хотя бы попробовать.
Оставляйте ваши комментарии и вопросы, если они у вас есть, используя форму внизу. Я всегда счастлив услышать, что говорят читатели!