Puncte:0

Primesc o eroare la copierea fișierelor pe o unitate USB cu scriptul meu

drapel fr

Vreau să-mi copiez datele pe o unitate USB și să primesc un mesaj de eroare.

Motivul este că la copierea tuturor datelor primesc un „/” la început.

Stie cineva de ce este asta?

Mai jos puteți vedea codul meu:

if ( [ -e $Dirname ] && [ -e /dev/sdb1 ] )
atunci
cp /home/jason/tmp/*_backup* /$Dirname
rm -r /home/jason/tmp/*_backup*
    echo "Datele dvs. au fost copiate cu succes."

altfel
    echo „Stibul dumneavoastră USB nu este conectat sau nu este montat”.
fi
$Dirname < /home/jason/Programs/Script/dirname_backup2usb.txt

Și parametrul pe care îl dau lui $Dirname este:

/media/xyz

David avatar
drapel cn
Este asta chiar și pe Ubuntu? Nu ai spus.
H.B. avatar
drapel fr
Salut David, da. Este Ubuntu.
drapel in
Dacă treceți `/media/xyz` ca parametru, bara oblică din `/$Dirname` poate să încurce lucrurile
H.B. avatar
drapel fr
Mulțumesc @matigo, a fost pentru slash. Dar spune că acum toate datele au fost copiate cu succes. dar nu vor fi prezente în directorul de destinație. Fac ceva greșit cu PASAREA?
H.B. avatar
drapel fr
@matigo pentru că atunci când le copiez cu comanda cp fără a trece adresa, funcționează bine.
bac0n avatar
drapel cn
Nu utilizați *copy* și *remove* (cel puțin nu fără o formă de verificare), dacă *copy* nu reușește, tot va elimina backup-ul. `mv` sau `rsync` este probabil o alegere mai bună.
H.B. avatar
drapel fr
@bac0n Mulțumesc. Am recunoscut că de fiecare dată când toate copiile de rezervă sunt șterse, deși procesul a eșuat.
bac0n avatar
drapel cn
poate că acest [exemplu](https://askubuntu.com/questions/1231737/a-udev-rule-for-automatically-executing-rsync-scrips-is-not-working/1231839#1231839) poate funcționa ca bază pentru în schimb, scriptul tău, pornind de la „Un exemplu cum poți...”
Puncte:1
drapel jp

Testarea pentru /dev/sdb1 nu garanteaza nimic. Doriți să identificați punctul de montare al sistemului de fișiere pe unitatea USB. Încercați cu linia de comandă cu lsblk, de exemplu

lsblk -f

sau cred că mai bine, cu

lsblk -o NUME,DIMENSIUNE,HOTPLUG,FSTYPE,LABEL,MOUNTPOINT,MODEL | grep -v '/snap/'

Puteți face un alias pentru a face mai ușor:

alias mylsblk="lsblk -o NAME,SIZE,HOTPLUG,FSTYPE,LABEL,MOUNTPOINT,MODEL | grep -v '/snap/'"

și editați-l în dvs ~/.bashrc fișier lângă celelalte aliasuri. Alerga

sursa ~/.bashrc

și poți începe să-l folosești:

$ mylsblk
NUME DIMENSIUNE HOTPLUG FSTYPE LABEL MOUNTPOINT MODEL
sda 238,5G 0 SanDisk SD6SB1M2
ââsda1 500M 0 ntfs Sistem
ââsda2 139,4G 0 ntfs Windows
ââsda3 1000M 0 ntfs Recuperare
ââsda4 1K 0
ââsda5 89,7G 0 ext4 lubionic /
ââsda6 8G 0 swap [SWAP]
sdb 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 swap
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 KINGSTON SA2000M8250G
âânvme0n1p1 232,9G 0 ext4 nvme-focal
âânvme0n1p2 1M 0

În exemplul de pe computerul meu există multe unități și chiar mai multe partiții. Dar acum puteți vedea că HOTPLUG este 1 pentru /dev/sdc, și puteți vedea dimensiunea și modelul, pentru a fi ușor de identificat. Deci, în acest caz, ar trebui să copiați în punctul de montare al sistemului de fișiere FAT /media/nio/KEEP_ME.

H.B. avatar
drapel fr
mulțumesc @sudodus pentru răspunsul tău detaliat. Am de gând să-l încerc. Cea mai mare problemă a mea este acum că nu pot trece sau redirecționa directorul pentru copierea fișierelor. Puteți vedea în Codul meu unde este eșecul?
sudodus avatar
drapel jp
Îmi pare rău, @H.B., dar nu vă înțeleg shellscript-ul. este foarte departe de cum as face eu programarea. Cred că trebuie să explicați în cuvinte ce doriți să faceți (unde aveți datele originale), vă rugăm să rulați o comandă lsblk similară cu ceea ce arăt în răspuns. Copiați și inserați rezultatul comenzii în întrebarea originală. Indentați fiecare linie cu 4 spații pentru a o reda ca cod. Altfel e greu de citit. Când voi vedea rezultatul, voi înțelege mai multe și ar trebui să vă pot ajuta.
sudodus avatar
drapel jp
@H.B., Ați mai folosit linii de comandă într-o fereastră de terminal? Puteți copia și lipi între browserul dvs. web și fereastra de linie de comandă. Apăsați tasta Enter pentru a executa linia de comandă.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.