Я использую облачные сайты в стойке и не имею доступа к SSH или RSYNC на их серверах, но у меня есть доступ к SSHFS.
Я хотел бы иметь возможность сделать резервную копию моего облачного сайта на моем локальном сервере Ubuntu, на котором есть SSH, RSYNC и т. Д.
Пока я думаю, что лучший способ сделать это - смонтировать сайт на локальном сервере, используя:
sshfs username@remoteserver.com:/path-to-site/ ~/Sites_Mounted/site-name/ -o reconnect,cache=no,compression=yes,ServerAliveInterval=15
Reconnect - соединение восстановится, если оно разорвется
Cache = no - потому что нам нужны живые резервные копии, а не старые кешированные файлы
Сжатие - для минимизации использования полосы пропускания
ServerAliceInterval - поскольку SSHFS через долгое время отключается и вылетает
Затем я подумывал об использовании команды RSYNC для копирования файлов с множеством сайтов в каталог резервных копий на локальном сервере, а затем, когда следующая резервная копия должна быть через 12 часов, скопируйте / RSYNC каталог резервных копий в новый каталог резервных копий (с другим именем, т.е. 2012-01-01-sitename), затем с помощью команды RSYNC скопируйте только изменения на удаленном сервере в новый каталог резервных копий, содержащий старую / предыдущую резервную копию.
Мои вопросы: сработает ли этот подход? Если да, то какие команды мне нужно будет использовать и можно ли включить все их в один сценарий .sh, который я мог бы запустить?
Или есть более простой, более эффективный или лучший способ сделать это.
(Я думаю, что могу заархивировать весь сайт на сервере и загрузить его, но это кажется немного ресурсоемким)
Мне пришлось клонировать несколько облачных серверов, вот мой подход:
Остановите все работающие службы, если сможете. Если это не вариант, вам нужно будет создавать дампы и резервные копии базы данных отдельно (т.е. все, что использует mysql, redis, solr и т. Д.)
создать каталог в корне, т.е. / x
смонтируйте / dev / sda1 (или xvda1, или любой другой раздел вашей корневой системы) на / x (поскольку вы можете подключить одно устройство к двум разным точкам одновременно). Значение здесь в том, что вы не получите ошибок для устройства в / proc и т. д. Если вы используете lvm, моментальный снимок тоже отлично подходит для этого.
На данный момент у вас есть несколько вариантов. Если на вашем сервере достаточно места на диске, просто создайте каталог / y и выполните
tar -zcvf --exclude '/x/*' --exclude '/y/*' /y/root.tar.gz /x/
Если вы этого не сделаете, вы можете передать его другому узлу через ssh:
tar -zcvf - /x/ |ssh -i /blah.pem user@someplace.net 'cat - > /tmp/root.tar.gz'
В любом случае вы можете скачать архив.
Последний и, вероятно, самый простой, но, на мой взгляд, не идеальный вариант - это просто выполнить синхронизацию каталога / x / с вашим локальным компьютером.
Какой бы маршрут вы ни выбрали, если у вас есть большие базы данных или kruft, которые вам не нужны, вы экономите время, исключая их из процесса tar (простое копирование работающей базы данных может привести к повреждению копии базы данных).