Если вам просто нужна команда, которая говорит вам, является ли путь каталогом или нет, используйте точку монтирования (1).
Для меня это печатает
$ mountpoint /
/ is a mountpoint
$ mountpoint /bin
/bin is not a mountpoint
$ mountpoint some-file
some-file is not a mountpoint
Хорошо, что статус выхода снова показывает то же самое, так что вы можете использовать его в своих сценариях, как этот:
if mountpoint "$foo" >/dev/null; then
: do mountpoint stuff
elif [ -d "$foo" ]; then
: do directory stuff
elif [ -e "$foo" ]; then
: do file stuff
else
echo "$foo does not exist!" >/2
fi
- Is there a possible way to transfer the OS from USB drive to SD card, while preserving the partitions?
Да, при условии, что размер SD-карты не меньше размера USB-накопителя. Вы можете запустить blockdev --getsize64 /dev/sda
, чтобы получить размер вашего USB-накопителя в байтах, и, изменив путь устройства к SD-карте, вы можете убедиться, что он равен как минимум такому же количеству байтов.
Маловероятно, что устройства имеют одинаковый размер, поэтому я бы предпочел создать идентичную таблицу разделов (с одинаковыми номерами разделов для минимальных хлопот )вручную на SD-карте. Это гарантирует, что дополнительное дисковое пространство, потенциально доступное на SD-карте, впоследствии может быть использовано, например, для хранения файлов. расширение корневого раздела или создание новых разделов. Используйте sfdisk -l /dev/sda
, чтобы получить список разделов на /dev/sda в единицах секторов, а затем используйте fdisk /dev/sdb
, чтобы создать такие же разделы на SD-карте (, предполагая, что ваше устройство SD-карты /dev/sdb, пожалуйста обновлять по мере необходимости ).
После пересоздания разделов содержимое каждого раздела можно копировать по одному.
- If it is possible, can it be done while Manjaro is running?
Да, но в этом случае вы должны монтировать файловые системы только для чтения, чтобы избежать риска повреждения копии операционной системой, если она запишет что-либо на диск во время копирования.
Вот команды, чтобы сделать именно это и скопировать два раздела, которые вы указали в своем вопросе, при условии, что вы создали разделы, как описано выше, и опять же при условии, что ваша SD-карта /dev/sdb:
mount /dev/sda1 -oremount,ro
dd if=/dev/sda1 of=/dev/sdb1 bs=1048576
mount /dev/sda2 -oremount,rw
mount /dev/sda2 -oremount,ro
dd if=/dev/sda2 of=/dev/sdb2 bs=1048576
mount /dev/sda2 -oremount,rw
Возможно, некоторым программам может не понравиться, что корневая файловая система временно смонтирована только для чтения -; перезагрузка исправит это.