Điểm:0

Tôi gặp lỗi khi sao chép tệp vào ổ USB bằng tập lệnh của mình

lá cờ fr

Tôi muốn sao chép dữ liệu của mình vào ổ USB và nhận được thông báo lỗi.

Lý do là khi sao chép tất cả dữ liệu tôi nhận được "/" ở đầu.

Có ai biết tại sao điều này?

Dưới đây bạn có thể thấy mã của tôi:

nếu ( [ -e $Dirname ] && [ -e /dev/sdb1 ] )
sau đó
cp /home/jason/tmp/*_backup* /$Dirname
rm -r /home/jason/tmp/*_backup*
    echo "Dữ liệu của bạn đã được sao chép thành công."

khác
    echo "Thẻ nhớ USB của bạn không được kết nối hoặc không được gắn kết."
fi
$Dirname < /home/jason/Programs/Script/dirname_backup2usb.txt

Và tham số mà tôi đang cung cấp cho $Dirname là:

/phương tiện/xyz

David avatar
lá cờ cn
Đây có phải là ngay cả trên Ubuntu? Bạn đã không nói.
H.B. avatar
lá cờ fr
Xin chào David, vâng. Đó là Ubuntu.
lá cờ in
Nếu bạn đang chuyển `/media/xyz` làm tham số, thì dấu gạch chéo trong `/$Dirname` có thể làm mọi thứ rối tung lên
H.B. avatar
lá cờ fr
Cảm ơn bạn @matigo, đó là dấu gạch chéo. Nhưng nó nói bây giờ tất cả dữ liệu đã được sao chép thành công. nhưng chúng sẽ không có trong thư mục đích. Tôi có làm sai điều gì với PASSING không?
H.B. avatar
lá cờ fr
@matigo bởi vì khi tôi sao chép những thứ này bằng lệnh cp mà không chuyển địa chỉ, nó hoạt động tốt.
bac0n avatar
lá cờ cn
Không sử dụng *copy* và *remove* (ít nhất là không phải nếu không có một số hình thức xác minh), nếu *copy* không thành công, nó vẫn sẽ xóa bản sao lưu của bạn. `mv` hoặc `rsync` có lẽ là lựa chọn tốt hơn.
H.B. avatar
lá cờ fr
@bac0n Cảm ơn bạn. Tôi nhận ra rằng mỗi khi tất cả các bản sao lưu bị xóa mặc dù quá trình này không thành công.
bac0n avatar
lá cờ cn
có lẽ cái này [ví dụ](https://askubuntu.com/questions/1231737/a-udev-rule-for-automatically-executing-rsync-scrips-is-not-working/1231839#1231839) có thể hoạt động như một nền tảng cho thay vào đó, tập lệnh của bạn, bắt đầu từ "Một ví dụ về cách bạn có thể..."
Điểm:1
lá cờ jp

thử nghiệm cho /dev/sdb1 không đảm bảo bất cứ điều gì. Bạn muốn xác định điểm gắn kết của hệ thống tệp trên ổ USB. Hãy thử với một dòng lệnh với lsblk, Ví dụ

lsblk -f

hoặc tôi nghĩ tốt hơn, với

lsblk -o TÊN, KÍCH THƯỚC, HOTPLUG, FSTYPE, LABEL, MOUNTPOINT, MODEL | grep -v '/snap/'

Bạn có thể tạo bí danh để dễ dàng hơn:

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

và chỉnh sửa nó thành của bạn ~/.bashrc file gần các bí danh khác. Chạy

nguồn ~/.bashrc

và bạn có thể bắt đầu sử dụng nó:

$ mylsblk
TÊN KÍCH THƯỚC HOTPLUG FSTYPE LABEL MÔ HÌNH ĐIỂM NÚI
sda 238,5G 0 SanDisk SD6SB1M2
Hệ thống ââsda1 500M 0 ntfs
ââsda2 139,4G 0 ntfs Windows
Phục hồi ââsda3 1000M 0 ntfs
ââsda4 1K 0
ââsda5 89,7G 0 ext4 lubionic /
ââsda6 8G 0 hoán đổi [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 trao đổi
sdc 15G 1 Siêu 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

Trong ví dụ từ máy tính của tôi, có nhiều ổ đĩa và thậm chí nhiều phân vùng hơn. Nhưng bây giờ bạn có thể thấy rằng HOTPLUG là 1 cho /dev/sdc, và bạn có thể xem kích thước và kiểu máy, để dễ nhận biết. Nên trường hợp này bạn nên copy vào mountpoint của hệ thống file FAT /phương tiện/nio/KEEP_ME.

H.B. avatar
lá cờ fr
cảm ơn bạn @sudodus vì câu trả lời chi tiết của bạn. Tôi sẽ thử nó. Vấn đề lớn nhất của tôi bây giờ là tôi không thể chuyển hoặc chuyển hướng thư mục để sao chép tệp. Bạn có thể thấy trong Mã của tôi lỗi ở đâu không?
sudodus avatar
lá cờ jp
Tôi xin lỗi, @H.B., nhưng tôi không hiểu shellscript của bạn. nó rất xa so với cách tôi sẽ lập trình. Tôi nghĩ bạn phải giải thích bằng lời những gì bạn muốn làm (nơi bạn có dữ liệu gốc của mình), Vui lòng chạy lệnh lsblk tương tự như những gì tôi hiển thị trong câu trả lời. Sao chép và dán đầu ra từ lệnh vào câu hỏi ban đầu. Thụt lề mỗi dòng 4 dấu cách để hiển thị dưới dạng mã. Nếu không thì rất khó đọc. Khi tôi nhìn thấy đầu ra, tôi sẽ hiểu thêm và tôi sẽ có thể giúp bạn.
sudodus avatar
lá cờ jp
@H.B., Bạn đã từng sử dụng các dòng lệnh trong cửa sổ đầu cuối chưa? Bạn có thể sao chép và dán giữa trình duyệt web của mình và cửa sổ dòng lệnh. Nhấn phím Enter để thực hiện dòng lệnh.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.