LINUX.ORG.RU

Как скопировать 3ТБ файлов в два разных каталога, 1Т и 2Т?

 


1

1

Нужно лить файлы в один каталог, пока там есть место. Когда место закончится, лить оставшиеся в следующий. Объединение блочных устройств не подходит (там ntfs на дисках назначения, нужно отдать людям в винду). Overlayfs не подходит, или лыжи не едут – копирую данные rsync в первый каталог, когда первый заполнился, rsync отвалился, далее монтирую overlay, первый полный как lower, второй (пока свободный) как upper, перезапускаю rsync и начинается копирование в upper заново уже скопированных данных даже с –ignore-times. rsync на второй с –ignore-from всех файлов с первого не подходит, страшно медленно получается, наверно, 2.5 млн файлов игнорировать тяжело.

★★

Последнее исправление: olegkrutov (всего исправлений: 2)

Сохрани список файлов в файл: find . -type f | sort > filelist.txt

Потом скопируй xargs -a filelist.txt cp -vt /dest1/

Когда место кончится запомни на каком файле это произошло, удали из filelist.txt все предыдущие файлы и запусти второй раз xargs -a filelist.txt cp -vt /dest2/

Ну это сработает если как ты пишешь надо копировать файлы в одну папку, без сохранения дерева каталогов, с каталогами нужно чуть посложнее придумать скрипт.

masa ★★
()
Ответ на: комментарий от olegkrutov

C деревом можно так:

find . -type f | sort > filelist.txt
xargs -a filelist.txt -I{} cp -v --parents {} /dest1/
xargs -a filelist.txt -I{} cp -v --parents {} /dest2/
masa ★★
()
Ответ на: комментарий от masa

Спасибо, попробую. Придётся пользоваться find -print0, т.к. там имена файлов просто любые. Завтра придумаю, как из такого файла выкусить начало…

olegkrutov ★★
() автор топика
Ответ на: комментарий от olegkrutov

grep -Fn '<путь к последнему файлу>' filelist.txt покажет номер строки, потом можно сделать tail -n +<номер строки> filelist.txt > filelist2.txt и будет список который начнется с того последнего файла.

masa ★★
()

Перемещать было бы проще, так?

А что, если сначала скопировать жёсткими ссылками в другое место на этом 3тбайтнике? Чтобы место не занимало. Затем из нового места переносить на другие диски.

Только нужен перенос, который сразу удаляет файл, а не в конце вообще всей операции.

NyXzOr ★★★★★
()
Ответ на: комментарий от masa

Забавно, что в мане ее нет

Почему нет? Вполне есть man grep:

-z, --null-data
    Treat input and output data as sequences of lines, each terminated by a zero byte (the ASCII NUL character) instead of a newline. Like the -Z or --null option, this option can be used with commands like sort -z to process arbitrary file names.
QsUPt7S ★★★
()

ChatGPT

/thread

anonymous
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.