Это происходит из-за того, что *.csv
передается дословно в ls
оболочкой, что является поведением POSIX по умолчанию. Если вы хотите избежать этого, вы должны использовать nullglob
, чтобы глобы, которые ничего не возвращают, ничего не возвращали вместо того, чтобы возвращать дословно введенную строку. Однако у этого есть проблема, потому что ls
ведет себя иначе, когда файлы не предоставлены.
Вместо этого попробуйте это, что позволяет избежать ошибок в случае встроенных символов новой строки в именах файлов:
shopt -s nullglob
filenames=( *.csv ) # put all files in an array
files="${#filenames[@]}" # get number of files
tar
следует использовать для резервного копирования файлов. Для резервного копирования точного состояния диска вы должны использовать dd
.
Итак, если вам нужна точная копия диска, используйте :dd if=/dev/nvme0n1 of=/mnt/some_other_drive/copy_of_the_first_drive
.
Еще лучше было бы использовать сжатие (если это диск нового компьютера, то его можно сильно сжать )с помощьюdd if=/dev/nvme0n1 | bzip2 > /mnt/some_other_drive/copy_of_the_first_drive.bz2
Возможны и многие другие варианты:
nc
или ssh
для создания туннеля и переноса резервной копии в другую систему во время ее создания (, если в вашей системе нет второго диска ). tar
, если вам нужны только файлы, а не все состояние rsync
, если вам нужны только файлы и нет второго доступного диска. Прежде всего, вы должны смонтировать его в каталог, например /mnt. после этого вы можете использовать команду (tar czvf somebackup.tar.gz /mnt ). в любом случае я предлагаю вам работать с rsync. если вы хотите перенести все состояние на другой жесткий диск, вы должны использовать команду dd, иначе вам не нужно этого делать.
tar
предназначен для работы на файловом уровне Вы можете использовать tar
для создания архива каталогов и файлов,и архив может быть или не быть сжатым.
Таким образом, вы можете сделать резервную копию содержимого корневого раздела / и других разделов (s ), которые могут быть в вашей системе.
Примеры (запускаются при работе другой системы, например. загружается с USB-накопителя)
sudo mkdir /mnt/sd1
sudo mkdir /mnt/sd2
sudo mkdir /mnt/sd3
sudo mount /dev/nvme0n1p1 /mnt/sd1
sudo mount /dev/nvme0n1p2 /mnt/sd2
sudo mount /dev/nvme0n1p3 /mnt/sd3
sudo tar -cvzf root.tar.gz /mnt/sd1
sudo tar -cvzf home.tar.gz /mnt/sd2 # optional
sudo tar -cvzf data.tar.gz /mnt/sd3 # optional
Доступ к отдельному файлу резервной копии легко получить, особенно если вы не сжимаете архив. Это хорошо.
Но таблица разделов (и загрузчик BIOS (, необходимые для загрузки в режиме BIOS )), будут , а не резервными копиями.
Вы можете использоватьClonezilla , инструмент для клонирования или создания [сжатого] образа содержимого всего диска с разделами и загрузчиками, всего.
Clonezilla достаточно умен, чтобы копировать только используемые блоки в файловой системе (с )и пропускать свободное пространство. Он также будет сжимать изображение, поэтому он будет быстрее и создаст изображение гораздо меньшего размера (по сравнению с обычным клонированием, напримерdd
). Образ представляет собой не один файл, а каталог с набором файлов, и вы используете Clonezilla для восстановления из образа.
Clonezilla также имеет несколько контрольных точек, которые помогут вам идентифицировать диски и убедиться, что при резервном копировании вы читаете с правильного диска, а при восстановлении записываете на правильный диск.