Nie można przesłać pliku z powodu błędu „System plików nie obsługuje łączy symbolicznych”

10

Kiedy chcę przenieść pliki z lokalnego dysku twardego na dysk thumbdrive, ciągle pojawia się ten błąd:

Filesystem does not support symbolic links. 

Nie wiem co to jest, potrzebuję pomocy przy przesyłaniu plików.

Przeciąganie i upuszczanie nie działa dla mnie, pojawia się błąd. Kliknij plik prawym przyciskiem myszy i wybierz opcję kopiowania, a następnie kliknij prawym przyciskiem myszy napęd pendrive i wybierz polecenie Wklej nie działa, nadal pojawia się ten sam błąd.

sowa
źródło
przeciąganie i upuszczanie nie działa dla mnie, pojawia się błąd. kliknij plik prawym przyciskiem myszy i wybierz opcję Kopiuj, a następnie kliknij prawym przyciskiem myszy napęd pendrive i wybierz polecenie Wklej nie działa, nadal pojawia się ten sam błąd.
sowa

Odpowiedzi:

5

Dowiązanie symboliczne to plik wskazujący na inny plik, rodzaj aliasu dla ścieżki pliku. Nie jest kompatybilny z systemem plików FAT-32 powszechnie występującym na napędach USB.

Aby znaleźć dowiązanie symboliczne, możesz otworzyć terminal i zrobić ls -alw katalogu, z którym masz problemy - dowiązanie symboliczne będzie miało ljako pierwszy znak na liście (gdzie katalogi mają a d). Albo możesz zrobić find DIR -type lgdzie DIRjest katalog, który może (pośrednio) zawierać dowiązania symboliczne (też .jest w porządku).

Jeśli chcesz skopiować treść: ls -al LINKgdzie LINKjest twój link, powie ci gdzie wskazuje (jeśli LINKjest to katalog, będziesz musiał usunąć ostatni ukośnik, jeśli taki masz). Po prostu skopiuj to.

Uwaga: ls -lzwykle wystarcza, dodałem właśnie a, aby wyświetlić ukryte pliki, których nazwa zaczyna się od kropki - w przypadku, gdy link jest ukrytym plikiem.

Ale jeśli boisz się terminala : w Nautilusie (przeglądarce plików) ikony linków są oznaczone małą strzałką w prawym dolnym rogu (ale nie wszystkie ikony oznaczone w ten sposób są linkami). Jeśli klikniesz prawym przyciskiem myszy ikonę i wybierzesz Properties, jeśli jest to link, Typerozpocznie się od niego Link to, a Link targetpowie ci, gdzie są prawdziwe rzeczy (chyba że jest to sam link, w takim przypadku będziesz musiał podążać za łańcuchem) .

Walter Tross
źródło
macOSjest w stanie utworzyć dowiązania symboliczne na moim exfatdysku. więc powinien to być problem z Linuksem / sterownikiem, a nie z systemem plików. Ta niezdolność całkowicie czyni git bezużytecznym do klonowania projektów na mój exfatdysk, którego używam na różnych platformach.
Necktwi
7

Jeśli kopiowanie odbywa się w jakimś terminalu powłoki (np. Bash), wówczas cpmożna wyraźnie polecić skopiowanie pliku, do którego prowadzi łącze --dereference, zamiast samego łącza. Domyślne zachowanie cppolega na kopiowaniu plików poprzez podążanie za ich linkami, ale wiele graficznych przeglądarek plików wydaje się mieć domyślne zachowanie polegające na próbie kopiowania linków i zachowaniu większości atrybutów.

man cp
-a, --archive
       same as -dR --preserve=all

-d     same as --no-dereference --preserve=links

-L, --dereference
       always follow symbolic links in SOURCE  

Przykład

touch SomeFile.txt
echo "some content" > someFile.txt
ln -s -T someFile.txt someLink
echo "Some content for the test file." > someLink
mkdir someDirectory
ln -s -T someDirectory someDirLink

Fakt, że someLinkjest to link, jest pokazany przez lflagę na pierwszej pozycji wyniku listingu (a „d” oznacza katalog).

ls -l

drwxrwxr-x. 2 user group 4096 Aug 17 17:17 someDirectory
lrwxrwxrwx. 1 user group 13 Aug 17 17:17 someDirLink -> someDirectory
-rw-rw-r--. 1 user group 32 Aug 17 17:01 someFile.txt
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 someLink -> someFile.txt

Plik zawiera treść, a link wskazuje na plik, ale można go użyć w prawie każdy sposób, w jaki mógłby być plik. (Zwróć uwagę na rozmiar pliku linku a rozmiar pliku tekstowego: 32 bajty vs 12 bajtów.)

cat someFile.txt

Some content for the test file.

cat someLink

Some content for the test file.

Najpierw skopiuj link do katalogu. Następnie skopiuj plik do katalogu za pomocą linku. (Poniżej pokazano również, że łącza do katalogów działają w podobny sposób jak łącza do plików.):

cp -a someLink someDirLink/newCopy
cp -L someLink someDirectory/newCopy.txt
ll -l someDirLink/

lrwxrwxrwx. 1 user group 12 Aug 17 17:12 newCopy -> someFile.txt
-rw-rw-r--. 1 user group 32 Aug 17 17:36 newCopy.txt


Uwaga

Można utworzyć łącza wskazujące pełną ścieżkę lub ścieżkę względną. Ponieważ w tym przykładzie użyto łącza opartego na względnej ścieżce celu znajdującego się w tym samym katalogu, co tworzone łącze, łącze zostało zerwane, gdy zostało skopiowane do nowego katalogu.

cat someDirLink/newCopy

cat: someDirLink/newCopy: No such file or directory

cat someDirLink/newCopy.txt

Some content for the test file.

Kevin
źródło
To powinna być zaakceptowana odpowiedź
Sourabh
5

możesz po prostu skompresować folder, a następnie skopiować go, jak chcesz

أحمد طه
źródło
To bardzo zależy od formatu archiwalnego i zastosowanych opcji.
jawtheshark,
2

Plik, który próbujesz skopiować, jest najwyraźniej dowiązaniem symbolicznym, który po prostu wskazuje na inny plik. Nośniki wymienne są zwykle formatowane za pomocą systemu plików Microsoft, takiego jak FAT32 lub NTFS, które nie obsługują dowiązań symbolicznych, więc nie można ich umieścić na dysku. Zauważ, że skopiowanie samego linku nie przyniosłoby nic dobrego, ponieważ posiadanie linku bez pliku, na który wskazuje, byłoby bezużyteczne.

psusi
źródło
2
NTFS dobrze obsługuje dowiązania symboliczne, jednak są one w formacie Interix. Zazwyczaj są one konwertowane w Ubuntu podczas korzystania ze sterownika ntfs-3g. Ale zgadzam się z twoją opinią, że samo kopiowanie dowiązań symbolicznych może powodować więcej problemów.
Mateng,
1

Twój thumbdrive / pendrive jest prawdopodobnie sformatowany jako FAT32 . Spróbuj sformatować go jako NTFS (najpierw wykonaj kopię zapasową jego zawartości). Oczywiście, EXT3 / EXT4 również obsługują dowiązania symboliczne - ale wtedy będziesz mieć problemy z kompatybilnością z systemami innymi niż Linux.
Sprawdź ten powiązany wątek .

Ale, jak słusznie wspomina psusi - kopiowanie dowiązania symbolicznego może powodować więcej problemów, ponieważ może wskazywać na plik lub folder na lokalnym dysku twardym, a zatem nie będzie dostępny z innych komputerów. Dowiązania symboliczne są zachowywane, jeśli są względnymi dowiązaniami symbolicznymi (np. Wskazują katalog powyżej katalogu bieżącego).

Według plotek pendrive w formacie NTFS mają tendencję do wcześniejszego zużycia . To nie jest zweryfikowane :). [Edytowane]

Mateng
źródło
2
Nie zgadzam się z twoją częścią dotyczącą pendrivów NTFS_formatowanych, które zużywają się szybciej. Mam pamięć flash USB 8 GB sprzed co najmniej 7 lat i sformatowany system plików NTFS. Wciąż działa. Również poleganie na odpowiedziach Yahoo na rzeczy, które cytujesz jako porady, nie są do końca dobrą rzeczą.
Thomas Ward
Rzeczywiście, szybciej się zużywa FUD, a co ważniejsze, NTFS również nie obsługuje dowiązań symbolicznych.
psusi
Nie wiedziałem, że to nieprawda, dobrze wiedzieć. Zmieniłem brzmienie. NTFS obsługuje jednak dowiązania symboliczne. Myślę, że NTFS jest lepszym wyborem, ponieważ dysku flash sformatowanego w EXT3 / EXT4 nie można odczytać z systemów innych niż Linux.
Mateng,
0

Łatwym obejściem tego problemu jest po prostu kompresja plików, które chcesz skopiować, a następnie skopiowanie ich na dysk i wyodrębnienie danych po umieszczeniu ich w żądanej lokalizacji. Nie musisz więc spieszyć się z problemem formatowania. Później nadal możesz zapisać wszystkie pliki na dysku i sformatować urządzenie za pomocą bardziej kompatybilnego, jeśli chcesz.

uloco
źródło