Перенос миллиона папок с файлами Linux - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB93.4409
BTC/USD64731.4770
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 12.06.2018, 08:51   #1
Soba
Senior Member
 
Регистрация: 02.05.2014
Сообщений: 628
Бабло: $257430
Question Перенос миллиона папок с файлами Linux

Не могу решить проблему, не хватает знаний.

Простой MV не решает проблему и выдает mv: Argument list too long folder
Гуглил и видел что можно как то использовать find, но не смог составить команду.

Подскажите пожалуйста как перенести миллион папок с файлами в другую папку.
Soba вне форума  
Старый 12.06.2018, 09:04   #2
johndoe
Member
 
Аватар для johndoe
 
Регистрация: 15.02.2009
Сообщений: 40
Бабло: $29894
По умолчанию

Если через find, то
Код:
find folderОткуда -name '*.*' -exec mv {} folderКуда \;
Но не факт, что find тоже справится очень большим кол-вом файлов.
johndoe вне форума  
Старый 12.06.2018, 09:27   #3
Soba
Senior Member
 
Регистрация: 02.05.2014
Сообщений: 628
Бабло: $257430
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от johndoe
Если через find, то
так перенесет только файлы, но не папки с файлами.
Soba вне форума  
Старый 12.06.2018, 09:39   #4
johndoe
Member
 
Аватар для johndoe
 
Регистрация: 15.02.2009
Сообщений: 40
Бабло: $29894
По умолчанию

Логично, тогда возможно
Код:
find folderОткуда/ -type d -exec mv {} folderКуда/ \;
https://losst.ru/komanda-find-v-linux

P.S. Хотя... наверное наверное mv нужно делать только для папок первого уровня вложенности, т.е. нужно еще добавить -maxdepth 1
johndoe вне форума  
Старый 12.06.2018, 10:04   #5
Soba
Senior Member
 
Регистрация: 02.05.2014
Сообщений: 628
Бабло: $257430
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от johndoe
Логично, тогда возможно
Цитата:
find /root/results/test/ -maxdepth 1 -type d -exec mv {} /var/www/html/123/ \;
таким макаром переносится вся папка test с файлами в папку 123, а нужно содержимое папки test перенести в папку 123
Soba вне форума  
Старый 12.06.2018, 10:41   #6
johndoe
Member
 
Аватар для johndoe
 
Регистрация: 15.02.2009
Сообщений: 40
Бабло: $29894
По умолчанию

Попробовал у себя кинуть тестовых файликов в /root/results/test, сработало так:
Код:
find /root/results/test/ -maxdepth 1 -not -wholename "/root/results/test/" -exec mv {} /var/www/html/123/ \;
Без опуции -not -wholename первый mv срабатывал именно для /root/results/test.
Но тут получается find сделает mv столько раз, сколько папок\файлов в /root/results/test/. И да, не факт, что каждый отдельный mv сможет выполниться.
johndoe вне форума  
Старый 12.06.2018, 10:51   #7
Soba
Senior Member
 
Регистрация: 02.05.2014
Сообщений: 628
Бабло: $257430
ТС -->
автор темы ТС По умолчанию

johndoe, так получилось, спасибо бро!
Soba вне форума  
Старый 12.06.2018, 17:13   #8
andyvein
Юниор
 
Регистрация: 15.10.2014
Сообщений: 27
Бабло: $25775
По умолчанию

а про xarg никто и не вспомнил ))
andyvein вне форума  
Старый 12.06.2018, 20:24   #9
Hector
hustle
 
Аватар для Hector
 
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
Отправить сообщение для Hector с помощью Jabber
По умолчанию

Rsync для такого можно
Hector вне форума  
Старый 13.06.2018, 00:35   #10
precautions
Senior Member
 
Регистрация: 01.08.2016
Сообщений: 1,332
Бабло: $155245
По умолчанию

Цитата:
Сообщение от andyvein Посмотреть сообщение
а про xarg никто и не вспомнил ))
Судя по топику на Хабре как удалить миллионы файлов из одной папки, использование xarg эффективнее find.
Но у ТС и с find всё получилось. Интересно, сколько времени занял процесс копирования.
precautions вне форума