Нужно разделить каталог 8Тб на 4 каталога - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть каталог с именем BigDataDirectory, в котором много файлов, и все они в сумме составляют до 8 ТБ.

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

Я попробовал команду split, но она, похоже, не работает nohup split -b 2T BigDataDirectory "Directory" &

Не могли бы вы скажи мне простой способ разделить мою папку / папку на несколько частей?

1 Ответ

0 голосов
/ 18 апреля 2020

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

Он создает подкаталог каждые 250 файлы и перемещает файлы в подкаталог. Если у вас есть 1000 файлов, они будут перемещены в 4 подкаталога с именами 1, 2, 3 и 4. Если у вас есть 1001 файл, 5-й подкаталог будет создан для последнего файла.

cd YOUR_BIG_DIR
n=250                  # will change destination dir after 250 files
dir=1; mkdir -p $dir   # create first destination sub-directory "1"

ls -1 | while read f; do ((c+=1)); echo mv "$f" $dir/; [ $((c % n)) -eq 0 ] && ((dir+=1)) && mkdir -vp $dir; done

Если вывод выглядит так, как вы хотите, удалите echo из команды, чтобы действительно mv файлы.

Та же команда, объясненная и без "echo" "используется для тестирования:

# list all files, 1 per line
ls -1 \ 
| while read f; do # with each file "$f"
    ((c+=1))          # increase file counter
    mv "$f" $dir/     # move the file to $dir/

    # if counter c is a divisor of n, increase the directory number
    # and create the new destination directory
    [ $((c % n)) -eq 0 ] && ((dir+=1)) && mkdir -v -p $dir
  done

Если вы хотите, чтобы подкаталоги были более точного размера, вам потребуется написать что-то более сложное, используя stat -c %s, чтобы получить размер каждого файла или что-то подобное .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...