Jak uzyskać dostęp do dysku flash USB z terminala?

250

Mam tylko dostęp do wiersza poleceń.
Muszę wykonać kopię zapasową moich danych (w folderze użytkownika) na pióro (USB DOK).

  • Jak ręcznie zamontować dysk flash?
  • Jakie powinno być polecenie kopiowania?
MEM
źródło

Odpowiedzi:

348

1. Znajdź, jak nazywa się dysk

Musisz wiedzieć, jak nazywa się dysk, aby go zamontować. Aby to zrobić, uruchom jedną z następujących czynności (uszeregowane według moich preferencji):

lsblk
sudo blkid
sudo fdisk -l

Szukasz partycji powinien wyglądać mniej więcej tak: /dev/sdb1. Im więcej masz dysków, tym większa jest litera. W każdym razie znajdź i zapamiętaj, jak się nazywa.

2. Utwórz punkt montowania (opcjonalnie)

To musi być gdzieś zamontowane w systemie plików . Zwykle możesz użyć / mnt /, jeśli jesteś leniwy i nie ma tam nic innego, ale w przeciwnym razie będziesz chciał utworzyć nowy katalog:

sudo  mkdir /media/usb

3. Mount!

sudo mount /dev/sdb1 /media/usb

Kiedy skończysz, po prostu odpal:

sudo umount /media/usb

Ta odpowiedź ma prawie 6 lat i chociaż jej rdzeń wciąż działa, rzeczy takie fdisk -lnie są najbardziej przyjaznymi dla użytkownika opcjami. W wyższych stosach pojawiają się również nowe mechanizmy do montażu urządzeń w rozsądny i standardowy sposób, które nie zawsze są dostępne.

Więc dodałem trochę polskiego z innych odpowiedzi. Czytając ten przypis i robiąc to na komputerze stacjonarnym, zdecydowanie istnieją argumenty przemawiające za użyciem udisksctlodpowiedzi na odpowiedź wecac . Montuje się w taki sam sposób, jak robi to pulpit - tworząc własny /media/$USER/devicekatalog - ale myślę, że wciąż istnieją argumenty za statycznym punktem montowania, szczególnie gdy nie chcesz, aby ścieżka się zmieniała.

Udisk opiera się również na D-Bus, więc może nie być dostępny wszędzie.

Oli
źródło
główną wadą tej metody jest to, że montuje ona urządzenie jako root. jeśli urządzenie ma format FAT, użytkownik nie będzie mógł do niego pisać. punkt / media / $ USER / urządzenie również będzie zawsze taki sam
eMBee
45

Zainstaluj pmount. Montuje dyski w / media /

pmount /dev/sdb1
pumount /dev/sdb1

Sudo nie jest potrzebne. Zamień „sdb1” na określoną ścieżkę urządzenia. Aby uzyskać więcej informacji, zobacz stronę:

pmount  ("policy mount") is a wrapper around the standard mount program
which permits normal users to mount removable devices without a  match-
ing /etc/fstab entry.

pmount is invoked like this:

pmount device [ label ]

This  will  mount  device  to a directory below /media if policy is met
(see below). If label is given, the mount point will  be  /media/label,
otherwise it will be /media/device.
Sepero
źródło
Działa to, gdy mountnalegam na zamontowanie mojego dysku tylko do odczytu.
Jonathan Landrum
12

Oprócz przy użyciu standardowego mountpolecenia (co wymaga korzeń) można zamontować dyski korzystania udisksi dbusze standardowego użytkownika.

Aby to zrobić, warto najpierw poznać kilka rzeczy na temat dysku:

  1. Jakie to urządzenie (tj. /dev/sdb1)
  2. jakiego systemu plików używa.

Znając je, możesz użyć prostego polecenia, aby zamontować dysk z wiersza poleceń.

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemMount "<filesystem>" []

to wywołanie powinno powtórzyć ścieżkę, na której jest zamontowane, jeśli się powiedzie.

Aby odmontować dyski zamontowane w ten sposób, możesz uruchomić:

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemUnmount []

Uwaga: <device>jest to po prostu koniec ścieżki do niego. Na przykład, jeśli to, co chcesz zamontować /dev/sdb2, to umieść je sdb2na miejscu <device>.


Jeśli nie wiesz, jakie to urządzenie lub jakiego systemu plików używa, nie bój się. Możesz łatwo wydrukować wszystkie te informacje za pomocą tego małego polecenia:

gdbus introspect --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices --recurse --only-properties | grep -E "(readonly .+ (IdLabel|IdType|Device(IsMounted|IsDrive|File) ).*|\}|.*\{)"

Spowoduje to wydrukowanie czegoś takiego:

node /org/freedesktop/UDisks/devices {
  node /org/freedesktop/UDisks/devices/sda {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = '';
        readonly s IdUsage = '';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sda';
    };
  };
  node /org/freedesktop/UDisks/devices/sda1 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = 'SYSTEM';
        readonly s IdType = 'ntfs';
        readonly s IdUsage = 'filesystem';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sda1';
    };
  };
  node /org/freedesktop/UDisks/devices/sda2 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = 'Windows7';
        readonly s IdType = 'ntfs';
        readonly s IdUsage = 'filesystem';
        readonly b DeviceIsMounted = true;
        readonly s DeviceFile = '/dev/sda2';
    };
  };
  node /org/freedesktop/UDisks/devices/sda3 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = 'Recovery';
        readonly s IdType = 'ntfs';
        readonly s IdUsage = 'filesystem';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sda3';
    };
  };
  node /org/freedesktop/UDisks/devices/sda4 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = '';
        readonly s IdUsage = '';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sda4';
    };
  };
  node /org/freedesktop/UDisks/devices/sda5 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = 'ext4';
        readonly s IdUsage = 'filesystem';
        readonly b DeviceIsMounted = true;
        readonly s DeviceFile = '/dev/sda5';
    };
  };
  node /org/freedesktop/UDisks/devices/sda6 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = 'swap';
        readonly s IdUsage = 'other';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sda6';
    };
  };
  node /org/freedesktop/UDisks/devices/sda7 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = 'ext4';
        readonly s IdUsage = 'filesystem';
        readonly b DeviceIsMounted = true;
        readonly s DeviceFile = '/dev/sda7';
    };
  };
  node /org/freedesktop/UDisks/devices/sdb {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = '';
        readonly s IdUsage = '';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sdb';
    };
  };
  node /org/freedesktop/UDisks/devices/sdb1 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = 'USB DRIVE';
        readonly s IdType = 'vfat';
        readonly s IdUsage = 'filesystem';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sdb1';
    };
  };
  node /org/freedesktop/UDisks/devices/sr0 {
    interface org.freedesktop.UDisks.Device {
        readonly s IdLabel = '';
        readonly s IdType = '';
        readonly s IdUsage = '';
        readonly b DeviceIsMounted = false;
        readonly s DeviceFile = '/dev/sr0';
    };
  };
};

Te, które zostały IdUsage = 'filesystem'zamontowane za pomocą powyższego polecenia.

Oznacza to, że na przykład gdybym chciał zamontować urządzenie „USB DRIVE”, uruchomiłbym polecenie

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/sdb1 --method org.freedesktop.UDisks.Device.FilesystemMount "vfat" []

Wszystkie te polecenia działają przy użyciu dbussystemu przesyłania komunikatów, w taki sam sposób, w jaki Nautilusinne menedżery plików automatycznie się montują. W tych komendach wysyłamy różne obiekty (np. /org/freedesktop/...Wiadomości z prośbą o zamontowanie i odmontowanie określonych urządzeń. Mogą to robić lub nie, w zależności od uprawnień, w których zostało udzielone PolicyKit.

Używając podobnych poleceń, można kontrolować prawie każdy aspekt doświadczenia w Ubuntu i symulować większość programów i funkcji systemowych (tj. Zamykanie, zmiana głośności itp.).

Alex L.
źródło
1
Sposób 2015 jestgdbus introspect --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/drives --recurse --only-properties
Nick Alexander
12

Użyj udisksctlz pakietu = udisks2(zarówno w Ubuntu, jak i Debianie). Procedura jest:

  1. Znajdź identyfikator urządzenia blokowego, które chcesz zamontować, używając lsblk:

    user@machine:~$ lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   1.8T  0 disk
    ├─sda1   8:1    0  19.1M  0 part /boot/efi
    ├─sda2   8:2    0   1.8T  0 part
    └─sda3   8:3    0    16G  0 part [SWAP]
    sdb      8:16   0 931.5G  0 disk
    ├─sdb1   8:17   0    37M  0 part
    ├─sdb2   8:18   0  15.9G  0 part [SWAP]
    └─sdb3   8:19   0 915.7G  0 part /
    sdc      8:32   1  14.4G  0 disk
    └─sdc1   8:33   1  14.4G  0 part
    sdd      8:48   0   1.8T  0 disk
    └─sdd1   8:49   0   1.8T  0 part
    

    Ze względu na swój rozmiar /dev/sdc1wydaje się być dyskiem USB, który chcę zamontować.

  2. Użyj udisksctldo zamontowania urządzenia. Zauważ, że -b== --block-device(aby zmniejszyć pisanie), ale wolę długie opcje dokumentacji:

    user@machine:~$ udisksctl mount --block-device /dev/sdc1
    ==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount ===
    Authentication is required to mount Kingston DT microDuo 3C (/dev/sdc1)
    Multiple identities can be used for authentication:
     1.  XXXXX,,, (user)
     2.  ,,, (YYYYY)
    Choose identity to authenticate as (1-2): 1
    Password:
    ==== AUTHENTICATION COMPLETE ===
    Mounted /dev/sdc1 at /media/user/USBDRIVELABEL.
    

Zwracając się do komentarza Hansa Deragona poniżej : możesz również powiedzieć, udisksctlaby zrobić --no-user-interaction. Nie próbuje uwierzytelnić użytkownika, co zwykle „po prostu działa”:

user@machine:~$ udisksctl mount --block-device /dev/sdc1 --no-user-interaction
# possibly some complaining here about I/O charset or need to run `fsck`
Mounted /dev/sdc1 at /media/user/USBDRIVELABEL.
wecac
źródło
O --object-pathco prosi?
CMCDragonkai
5

Możesz także automatycznie montować urządzenia USB na Ubuntu Server za pomocą USBmount.

Upewnij się, że uruchomiłeś apt-get update / upgrade przed rozpoczęciem instalacji:

sudo apt-get update && sudo apt-get upgrade

Teraz zainstaluj USBmount z repozytoriów:

sudo apt-get install usbmount

USBmount montuje wszystkie napędy USB w /media/usb*(USB0, USB1, USB2 ...)

Teraz podłącz dysk USB i poczekaj, aż zostanie wykryty i zamontowany. Tak długo, jak system operacyjny hosta obsługuje system plików, należy go zamontować.

Aby sprawdzić, czy napęd USB został poprawnie zamontowany, możesz użyć df -hdo wyświetlenia wszystkich dostępnych napędów i ich odpowiednich punktów montażu

Aby odinstalować dysk, możesz użyć umount.

sudo umount /media/usb0
Sandro
źródło
3

To proste. Kiedy chcę użyć napędu USB w terminalu, robię to:

Utwórz folder w /media:

mkdir /media/mountDrive 

Ten folder będzie używany jako punkt montowania. Użyj tego polecenia:

sudo mount /dev/sdd1 /media/mountDrive 

sdd1to pierwsza partycja mojego USB. Następnie możesz przejść do folderu, w którym już zostałeś zamontowany

cd /media/mountDrive

Jeśli chcesz wyświetlić listę plików na dysku, możesz użyć lspolecenia.

Aby odmontować dysk, możesz użyć

sudo umount /dev/sdd1

Zauważ, że w moim systemie jest to dysk USB /dev/sdd1, ale w twoim systemie może być coś innego. Aby dowiedzieć się, co to jest, użyj dfpolecenia, aby zobaczyć wszystkie dyski podłączone w danym momencie.

David Vale
źródło