Цикл for не работает с каталогами с числовыми метками [closed]

Hay algunas herramientas de deduplicación que pueden hacer esto por usted. Si instala zbackup , que probablemente esté disponible como un paquete para su sistema, en las máquinas locales y remotas, puede alimentarlo con tarde sus archivos y encontrará las partes que están duplicadas, y no conservar estas copias.

No tiene que cambiar su fuente en absoluto, cambiando el nombre, vinculando duro o vinculando suave. Aquí hay un script de ejemplo que crea un archivo grande y lo copia en 3 directorios A, B, C. Luego carga los directorios (sin comprimir )en zbackup. Comparamos el tamaño del repositorio resultante y lo que sería un alquitrán comprimido convencional. Normalmente, en esta etapa, el repositorio ahora se copiaría en el control remoto y se descomprimiría en el control remoto, pero el script simplemente lo desempaqueta a través de tar en un nuevo directorio para que podamos compararlo con el original.

ZB=/tmp/zrepo
cd /tmp/; mkdir try; cd try
dd count=5000 if=/dev/urandom of=file
for dir in A B C
do  mkdir $dir
    date >$dir/a
    cp file $dir/b$dir
done
ls -l /tmp/try/*/*
zbackup init --non-encrypted $ZB
tar cf - A B C  | zbackup backup --non-encrypted $ZB/backups/x
du -bs $ZB
tar czf - A B C | wc -c
cd /tmp; mkdir copy; cd copy
zbackup restore --non-encrypted $ZB/backups/x | tar xf -
ls -l /tmp/copy/*/*

Aquí hay algo de la salida. Como puede ver, el repositorio ocupa solo 2632045 bytes, en comparación con un tar comprimido de 7682010 bytes, lo que muestra que las 3 copias del archivo grande se han deduplicado en 1 copia.

-rw-r--r-- 1 meuh      30 Jun  2 12:35 /tmp/try/A/a
-rw-r--r-- 1 meuh 2560000 Jun  2 12:35 /tmp/try/A/bA
-rw-r--r-- 1 meuh      30 Jun  2 12:35 /tmp/try/B/a
-rw-r--r-- 1 meuh 2560000 Jun  2 12:35 /tmp/try/B/bB
-rw-r--r-- 1 meuh      30 Jun  2 12:35 /tmp/try/C/a
-rw-r--r-- 1 meuh 2560000 Jun  2 12:35 /tmp/try/C/bC

4       /tmp/zrepo/info
4       /tmp/zrepo/index/2e0ec29dfd5742005a477525009cfa3a6677f28cffaf2ae5
4       /tmp/zrepo/backups/x
2052    /tmp/zrepo/bundles/e0/e0a14717771602304b480202e05a4f796e8346b7033c231e
2052    /tmp/zrepo/bundles/e0
520     /tmp/zrepo/bundles/3c/3cf381e405fc278c4336ae331c5ea6a9d67b3147792567bc
520     /tmp/zrepo/bundles/3c

2632045 /tmp/zrepo # du -bs of repo

7682010            # size of tar z

-rw-r--r-- 1 meuh      30 Jun  2 12:35 /tmp/copy/A/a
-rw-r--r-- 1 meuh 2560000 Jun  2 12:35 /tmp/copy/A/bA
-rw-r--r-- 1 meuh      30 Jun  2 12:35 /tmp/copy/B/a
-rw-r--r-- 1 meuh 2560000 Jun  2 12:35 /tmp/copy/B/bB
-rw-r--r-- 1 meuh      30 Jun  2 12:35 /tmp/copy/C/a
-rw-r--r-- 1 meuh 2560000 Jun  2 12:35 /tmp/copy/C/bC

1
28.09.2018, 11:39
2 ответа

Протестируйте его вручную, шаг за шагом, выполняя отладку при возникновении проблем.

i=10
cd sample_${i}
mv *.fa sample_${i}.fa
mv *.gff sample_${i}.gff
mv *.bam sample_${i}.bam
mv *.sam sample_${i}.sam
cd..

Если написано sample_10 doesn't exist, проверьте.

2
27.01.2020, 23:23

Я думаю, что ваша логика где-то ошибочна и что у вас есть дубликат файла в образце _9 и что это является причиной сбоя команды, но так как это слишком громоздко, чтобы вводить комментарий и вы, кажется, не на -линии, поэтому я не могу пригласить вас в чат, попробуйте это:

#!/bin/bash
set -x
for i in {1..18};
do
  (
    cd "sample_${i}"
    pwd
  )
done

и предоставьте ответ на свой вопрос. Мы возьмем его оттуда.

1
27.01.2020, 23:23

Теги

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