Копирование большого количества файлов от одного каталога до другого в Linux

У меня есть каталог, содержащий приблизительно 280 000 файлов. Я хочу переместить их в другой каталог.

Если я использую cp или mv затем я получаю ошибку 'список аргументов слишком долго'.

Если я пишу сценарий как

for file in ls *; do
   cp {source} to {destination} 
done

затем, из-за ls команда, ее производительность ухудшается.

Как я могу сделать это?

13
задан 25.04.2016, 09:51

5 ответов

Используйте rsync:

$ rsync -a {source}/ {destination}/

например.

$ rsync -a /some/path/to/src/ /other/path/to/dest/

(отметьте запаздывание/s),


Примечание: если это - долгая операция, и Вы хотите видеть некоторый признак прогресса во время копирования, можно или добавить -v (подробная) опция, которая затем перечисляет каждый файл, скопированный, или рассматривает использование --progress опция, для большего сжатого прогресса производится.
20
ответ дан 07.12.2019, 11:28

Вам не нужен ls, можно просто использовать

for file in *; do
    cp $file /your/dest
done

или можно сделать что-то как:

echo * | xargs -i cp {} /your/dest
1
ответ дан 07.12.2019, 11:28
#!/bin/bash
d=$(date +%Y%m%d%H%m%s)
cd /path
tar zcvf "/destination/bakup_${d}.tar.gz" mydirectory_for_transer
0
ответ дан 07.12.2019, 11:28

Мне нравится rsync для этого, или:

find dir1 -type f -exec cp {} dir2 \;
0
ответ дан 07.12.2019, 11:28

Принятие Вас хочет переместить файлы в той же файловой системе, Вы могли просто переименовать каталог, содержащий Ваш, недостает и быть сделанным с ним.

0
ответ дан 07.12.2019, 11:28

Теги

Похожие вопросы