Si creó el sistema de archivos en el dispositivo de bloque real, como parece que lo hizo, fdisk
no será su amigo hasta que sus datos se hayan movido a otro lugar. Deberá montar el sistema de archivos, copiar los datos y luego desmontarlo. Luego puede usar fdisk
para particionar correctamente el dispositivo de bloque, usar mkfs
en la partición, montarlo y mover sus datos:
$ sudo -s
# mkdir -p /mnt/export
# mount /dev/sdb /mnt/export
# exit
$ rsync -a /mnt/export/ /path/to/backup/
$ sudo -s
# umount /mnt/export
# fdisk /dev/sdb # create your partitions
# mount /dev/sdb1 /mnt/export
# exit
$ rsync -za /path/to/backup/ /mnt/export/
Это будет:
for i in {1..3}; do
mkdir dir$i
touch dir$i/file1
date > dir$i/file2
if [ $i -eq 3 ]; then
grep $(hostname) /etc/hosts > dir$i/file3
fi
done
Нет необходимости в каком-либо цикле. Фактически, это только сбивает с толку неэффективного.
mkdir dir{1..3}
touch dir{1..3}/file1
date | tee dir{1..3}/file2 >/dev/null
grep "$(hostname)" /etc/hosts >dir3/file3
Единственное, что немного продвинулось в этом ответе, - это использование тройника
. Утилита tee
принимает данные со стандартного ввода и дублирует их в несколько файлов, а затем снова в стандартный вывод. Я использую его здесь, чтобы записать дату из утилиты date
в три файла file2
. Перенаправление на / dev / null
в конце есть, чтобы мы также не получали дату, отображаемую в терминале.
В приведенном выше коде dir {1..3}
будет расширен до dir1 dir2 dir3
и dir {1..3} / file1
будет расширен до dir1 / file1 dir2 / file1 dir3 / file1
до того, как утилита будет вызвана с этим в качестве аргументов.