URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 89432
[ Назад ]

Исходное сообщение
"Копирование большого каталога"

Отправлено Макс , 23-Июл-10 14:35 
На слабом сервере CentOS с SATA дисками и с файловой системой ext3 имеется каталог с большим количеством файлов и подкаталогов - 270 тыс файлов общим объемом 20 Gb. На сервере под Apache2 вертятся сайты и при копирование этого каталога на отдельный диск бэкапа  возникает конфликт за дисковые ресурсы, вплоть до падения сервера. Посоветуйте, пожалуйста, как скопировать этот каталог.

Содержание

Сообщения в этом обсуждении
"Копирование большого каталога"
Отправлено vg , 23-Июл-10 15:03 
если на другой сервер, то можно попробовать через rsync
rsync имеет опцию "bwlimit", которой задается скорость скачивания
сделать данную скорость довольно маленькой
rsync долго будет делать файл-листинг - тут диск будет тормозить
но потом все будет нормально

также, можно копировать частями


"Копирование большого каталога"
Отправлено MAx , 23-Июл-10 16:55 
>если на другой сервер, то можно попробовать через rsync
>rsync имеет опцию "bwlimit", которой задается скорость скачивания
>сделать данную скорость довольно маленькой
>rsync долго будет делать файл-листинг - тут диск будет тормозить
>но потом все будет нормально
>
>также, можно копировать частями

К сожаления, копировать надо на свой сервер, с учетом того, что свободного места на дисках мало.


"Копирование большого каталога"
Отправлено Bosh , 23-Июл-10 19:39 
http://www.tolaris.com/2010/04/23/using-lvm-to-make-a-live-c.../
http://tldp.org/HOWTO/LVM-HOWTO/snapshots_backup.html

>На слабом сервере CentOS с SATA дисками и с файловой системой ext3
>имеется каталог с большим количеством файлов и подкаталогов - 270 тыс
>файлов общим объемом 20 Gb. На сервере под Apache2 вертятся сайты
>и при копирование этого каталога на отдельный диск бэкапа  возникает
>конфликт за дисковые ресурсы, вплоть до падения сервера. Посоветуйте, пожалуйста, как
>скопировать этот каталог.


"Копирование большого каталога"
Отправлено Bosh , 23-Июл-10 19:40 
http://backuppc.sourceforge.net/info.html

>На слабом сервере CentOS с SATA дисками и с файловой системой ext3
>имеется каталог с большим количеством файлов и подкаталогов - 270 тыс
>файлов общим объемом 20 Gb. На сервере под Apache2 вертятся сайты
>и при копирование этого каталога на отдельный диск бэкапа  возникает
>конфликт за дисковые ресурсы, вплоть до падения сервера. Посоветуйте, пожалуйста, как
>скопировать этот каталог.


"Копирование большого каталога"
Отправлено SDenis , 23-Июл-10 19:47 
>На слабом сервере CentOS с SATA дисками и с файловой системой ext3
>имеется каталог с большим количеством файлов и подкаталогов - 270 тыс
>файлов общим объемом 20 Gb. На сервере под Apache2 вертятся сайты
>и при копирование этого каталога на отдельный диск бэкапа  возникает
>конфликт за дисковые ресурсы, вплоть до падения сервера. Посоветуйте, пожалуйста, как
>скопировать этот каталог.

Рекурсивно, по-файлово. И хранилище сменить.


"Копирование большого каталога"
Отправлено SDenis , 23-Июл-10 19:58 
>>На слабом сервере CentOS с SATA дисками и с файловой системой ext3
>>имеется каталог с большим количеством файлов и подкаталогов - 270 тыс
>>файлов общим объемом 20 Gb. На сервере под Apache2 вертятся сайты
>>и при копирование этого каталога на отдельный диск бэкапа  возникает
>>конфликт за дисковые ресурсы, вплоть до падения сервера. Посоветуйте, пожалуйста, как
>>скопировать этот каталог.
>
>Рекурсивно, по-файлово. И хранилище сменить.

Вдогонку:

https://www.opennet.ru/docs/RUS/bash_scripting_guide/c6407.html


"Копирование большого каталога"
Отправлено MAx , 23-Июл-10 21:55 
Все было бы хорошо, только при копировании даже 10 файлов начинает быстро уменьшаться free memory и сервер падает. Такие опыты уже проводились. В корне этого каталога 240 тыс файлов и еще есть подкаталоги. Размер файла каталога почти 1 Гб. Если написать скрипт и после копирования каждого файла сделать sleep 1, то понадобится 66 часов. Надо придумать что-то другое.

"Копирование большого каталога"
Отправлено SDenis , 24-Июл-10 17:42 
>Все было бы хорошо, только при копировании даже 10 файлов начинает быстро
>уменьшаться free memory и сервер падает. Такие опыты уже проводились. В
>корне этого каталога 240 тыс файлов и еще есть подкаталоги. Размер
>файла каталога почти 1 Гб. Если написать скрипт и после копирования
>каждого файла сделать sleep 1, то понадобится 66 часов. Надо придумать
>что-то другое.

Тогда, IMHO, винты на другую машину. Данные можно спасти c dd.


"Копирование большого каталога"
Отправлено MAx , 24-Июл-10 23:25 
Тоже невозможно. Винты на одном сервере, вот на нем все можно делать. Если остановить Apache, то проблем не будет, но 20 гигов будут переписываться долго.


"Копирование большого каталога"
Отправлено obl , 19-Апр-11 00:48 
> Все было бы хорошо, только при копировании даже 10 файлов начинает быстро
> уменьшаться free memory и сервер падает. Такие опыты уже проводились. В
> корне этого каталога 240 тыс файлов и еще есть подкаталоги. Размер
> файла каталога почти 1 Гб. Если написать скрипт и после копирования
> каждого файла сделать sleep 1, то понадобится 66 часов. Надо придумать
> что-то другое.

сделай sleep после 10 файлов и понадобится 6.6 часов? :)
100 файлов - 0.66 часов


"Копирование большого каталога"
Отправлено ACCA , 25-Июл-10 22:36 
[...]
>конфликт за дисковые ресурсы, вплоть до падения сервера. Посоветуйте, пожалуйста, как
>скопировать этот каталог.

За какие именно дисковые ресурсы происходит конфликт? Если у тебя два процесса в Unix не могут поделить диск, наверное дело не в ресурсах.


Варианты:

1. find /home/of/this/mess > file.lst ; cpio -p /destination/directory < file.lst
2. написать свою программу копирования, например на Perl, которая медленно будет читать
   каталог и потом медленно копировать файл за файлом.
3. навести порядок в корневом каталоге, чтобы там было не 240тыс. файлов, а, скажем, 676
   каталогов от aa до zz. Сделать хардлинки от файлов в этих каталогах. Переделать
   сервера, чтобы находили файлы на новых местах. Стереть 240тыс. файлов из корня.
   Получить управляемую систему.


Возможно, перед этим придётся выполнить:

0. нанять админа с прямыми руками, а старого перевести в операторы backup.