Как создать несколько zip из каталога, содержащего миллион XML-файлов?

Ваш пример кода мог бы получить Вас вещи как file1.2011-10-07.2011-10-08.tar.gz и я сомневаюсь, что это - то, что Вы хотите.

Кроме того, rename не стандартная команда, таким образом, она действительно зависит от того, что Ваш делает.

Так как Вы говорите, что существует только когда-либо постоянное число файлов с фиксированными именами, Вы могли, вероятно, использовать простой сценарий как:

cdate=$(date +%Y-%m-%d)
for file in file1.tar.gz file2.tar.gz; do
    mv "$file" "$cdate"_"$file"
done
4
22.08.2012, 20:54
2 ответа

Это может быть полезно:

$ zip all.zip *.xml  ## create a big archive.

Найдите общий размер архива:

$ ls -lh all.zip

Теперь, разделите крупный архив на небольшие архивы, поскольку Вам нужно:

$ split -b 5M all.zip ## creates 5 MB zips

Примечание: извлечение архивов не работает, если Вы не присоединяетесь к ним назад:

cat x* > oldbigzip.
1
27.01.2020, 21:00

Я сделал бы это как это:

# Create file list
find . -type f -name '*.xml' > filelist

n=10000
fileno=1

# Loop through list, extracting n names each time
for i in $(seq 1 $n $(wc -l < filelist)); do
  zipfile="zipfile$(printf "%04d" $((fileno++)))"
  sed -n "$i,$((i+n-1))p" filelist | zip $zipfile -@
done
1
27.01.2020, 21:00
  • 1
    я попробовал этот сценарий. Это работает быстро в локальном диске Unix. Но, тот же сценарий является слишком медленным в диске NFS. Там какой-либо путь состоит в том, чтобы сделать его быстрее в диске NFS? –  user1617267 31.08.2012, 10:14
  • 2
    Это - то, с такой скоростью, как это может добраться, ссылка NFS является узким местом. Запустите скрипт на сервере NFS или получите более быстрый сетевой канал. –  Thor 31.08.2012, 10:54

Теги

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