Быстро скопировать весь сайт

Зачастую нам требуется перенести большой сайт со старого сервера на новый, при этом сайт очень большой. К примеру это Битрикс24 портал.
С кучей  медиа контента в сотни гигабайт, а места на сервере и так мало и даже для 1 бэкапа места уже не хватает.
Хотелось бы найти самый быстрый способ переноса сайта, из плюсов данного способа:

  • Копирование по интернету должно идти в 1 поток, то есть 1 файл. ( так значительно быстрее чем множество мелких файлов, зачастую на несколько порядков)
  • Минимальный размер архива с обоих сторон, желательно размером в 0 кб
  • Возможность переноса сайта с сервера на котором занято 100% дискового пространства.
  • Так же минимальный размер бэкапа на сервере куда заливается сайт, желательно так-же 0 кб
  • Минимальный размер файла, при больших проектах это имеет значение.
Решение очень простое
для этого у нас должные быть доступы по ssh к  серверам. 
На сервере куда нам нужно скопировать сайт мы создаем папку ( можно сразу на место   расположения сайта)
я создам папку ( во втором примере она создастся сама)
mkdir /tmp/11

Теперь все что нам остается на сервере от с которого мы копируем  выполнить 1 команду.
tar cvfz - /home/bitrix/ext_www/ministerstvo24.ru/upload/mail/ |ssh root@11.111.111.11 "cd /tmp/11;tar xvfz -"
где
root@11.111.111.11
логин и айпи сервера куда нужно перенести сайт. ( пароль введете в диалоговом окне)

Если же нам нужно скопировать скажем только файлы за последние 6 дней ( к примеру обновить на dev сервере контент с продушена, не копируя все  файлы подряд.
 cd /var/www/site.ru/upload; find . -type f -mtime -6 -print0 | tar --null --files-from=/dev/stdin -cf - | ssh root@11.111.111.11 tar -xf - -C /tmp/11 
Тут немного поясню.
find - искать рекурсивно от каталога, в данном случае"."
-type f - только файлы ( каталоги создадутся поскольку будут в путях к этим файлам)
-mtime -6  за последние 6 дней
-print0 - просто вывод find в 1  без переноса строки

В результате в папке /tmp/11 получим  древовидную структуру с файлами за последние 6 дней. В моем случае это было 20 файлов против 4Гб мелких файлов.

Перенос 1С-биртик сайта с исключением  каталогов.

tar -cvpzf - --directory /home/bitrix/www --ignore-failed-read --exclude='./bitrix/tmp' --exclude='./bitrix/updates' --exclude='./bitrix/backup/*\.gz*' --exclude='./bitrix/backup/*\.tar*' --exclude='./bitrix/cache' --exclude='./bitrix/managed_cache' --exclude='./bitrix/stack_cache' --exclude='./upload' --exclude='./stats' --exclude='./bitrix/www/bitrix/.settings.php' --exclude='./bitrix/php_interface/dbconn.php' . |ssh root@192.168.0.246 "cd /home/bitrix/www;tar xvfz -"

Оставить комментарий