Рейтинг:0

Я получаю сообщение об ошибке при копировании файлов на USB-накопитель с помощью моего скрипта

флаг fr

Я хочу скопировать свои данные на USB-накопитель и получить сообщение об ошибке.

Причина в том, что при копировании всех данных я получаю "/" в начале.

Кто-нибудь знает, почему это так?

Ниже вы можете увидеть мой код:

если ( [ -e $Dirname ] && [ -e /dev/sdb1 ] )
тогда
cp /home/jason/tmp/*_backup* /$Dirname
rm -r /home/jason/tmp/*_backup*
    echo "Ваши данные были успешно скопированы."

еще
    echo "Ваша флешка не подключена или не смонтирована."
фи
$Dirname < /home/jason/Programs/Script/dirname_backup2usb.txt

И параметр, который я даю $Dirname:

/медиа/xyz

David avatar
флаг cn
Это даже на Ubuntu? Вы не сказали.
H.B. avatar
флаг fr
Привет Дэвид, да. Это Убунту.
флаг in
Если вы передаете `/media/xyz` в качестве параметра, косая черта в `/$Dirname` может все испортить.
H.B. avatar
флаг fr
Спасибо @matigo, это было за косую черту. Но теперь пишет, что все данные успешно скопированы. но они не будут присутствовать в целевом каталоге. Я делаю что-то не так с PASSING?
H.B. avatar
флаг fr
@matigo, потому что, когда я копирую их с помощью команды cp без передачи адреса, это работает хорошо.
bac0n avatar
флаг cn
Не используйте *copy* и *remove* (по крайней мере, без какой-либо проверки), если *copy* не удастся, резервная копия все равно будет удалена. `mv` или `rsync`, вероятно, лучший выбор.
H.B. avatar
флаг fr
@ bac0n Спасибо. Я понял, что каждый раз все резервные копии удаляются, хотя процесс не удался.
bac0n avatar
флаг cn
возможно, этот [пример] (https://askubuntu.com/questions/1231737/a-udev-rule-for-automatically-executing-rsync-scrips-is-not-working/1231839#1231839) может послужить основой для вместо этого ваш сценарий, начиная с «Пример того, как вы можете ...»
Рейтинг:1
флаг jp

Тестирование на /dev/sdb1 ничего не гарантирует. Вы хотите определить точку монтирования файловой системы на USB-накопителе. Попробуйте с командной строкой с лсблк, Например

lsblk -f

или я думаю лучше, с

lsblk -o ИМЯ, РАЗМЕР, ГОРЯЧАЯ ПЛАГА, FSTYPE, МЕТКА, МОНТАЖ, МОДЕЛЬ | grep -v '/щелчок/'

Вы можете сделать псевдоним, чтобы упростить его:

alias mylsblk="lsblk -o ИМЯ, РАЗМЕР, ГОРЯЧАЯ ПЛУНКА, FSTYPE, МЕТКА, МОНТАЖ, МОДЕЛЬ | grep -v '/snap/'"

и отредактируйте его в свой ~/.bashrc рядом с другими псевдонимами. Бег

источник ~/.bashrc

и вы можете начать использовать его:

$ mylsblk
НАИМЕНОВАНИЕ РАЗМЕР ГОРЯЧАЯ ПЛУНЯ FSТИП ЭТИКЕТКА ТОЧКА КРЕПЛЕНИЯ МОДЕЛЬ
sda 238,5G 0 СанДиск SD6SB1M2
ââsda1 500M 0 ntfs Система
ââsda2 139,4G 0 нтфс Windows
ââsda3 1000M 0 Восстановление ntfs
ââsda4 1K 0
ââsda5 89,7G 0 ext4 lubionic /
ââsda6 8G 0 своп [SWAP]
сдб 3,7T 0 WDC WD4002FYYZ-0
ââsdb1 510M 0 ext4 boot-nvme-focal
ââsdb2 30G 0 ext4 xubufocal-hdd
ââsdb5 1M 0
ââsdb6 100G 0 ext4 studio12.04
ââsdb7 3,5T 0 ext4 multimed-2 /media/multimed-2
ââsdb8 5G 0 своп
sdc 15G 1 Transcend 16GB
ââsdc1 15G 1 vfat KEEP_ME /media/nio/KEEP_ME
sr0 1024M 1 DVD-RW DH16AESH
nvme0n1 232,9G 0 КИНГСТОН СА2000М8250Г
âânvme0n1p1 232,9G 0 ext4 nvme-focal
âânvme0n1p2 1M 0

В примере с моего компьютера много дисков и еще больше разделов. Но теперь вы можете видеть, что HOTPLUG равен 1 для /dev/sdc, и вы можете увидеть размер и модель, чтобы их было легко идентифицировать. Так что в этом случае вы должны скопировать в точку монтирования файловой системы FAT /media/nio/KEEP_ME.

H.B. avatar
флаг fr
спасибо @sudodus за подробный ответ. Я собираюсь попробовать. Моя самая большая проблема сейчас в том, что я не могу передать или перенаправить каталог для копирования файлов. Вы видите в моем коде, где ошибка?
sudodus avatar
флаг jp
Извините, @H.B., но я не понимаю ваш шеллскрипт. это очень далеко от того, как я бы программировал. Я думаю, вы должны объяснить словами, что вы хотите сделать (где у вас есть исходные данные). Пожалуйста, запустите команду lsblk, аналогичную той, что я показываю в ответе. Скопируйте и вставьте вывод команды в исходный вопрос. Сделайте отступ каждой строки на 4 пробела, чтобы отобразить ее как код. Иначе трудно читать. Когда я увижу результат, я пойму больше и смогу вам помочь.
sudodus avatar
флаг jp
@ HB, вы раньше использовали командные строки в окне терминала? Вы можете копировать и вставлять данные между веб-браузером и окном командной строки. Нажмите клавишу Enter, чтобы выполнить командную строку.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.