Załóżmy, że mam dwa identyczne systemy. W pierwszym systemie stworzyłem dowiązanie symboliczne. Na drugim chcę skopiować to dowiązanie symboliczne przez sftp, a dowiązanie symboliczne powinno działać tak samo (tj. Jeśli dowiązanie symboliczne do /etc/
, po skopiowaniu, tylko skopiowane zostanie tylko dowiązanie symboliczne i tylko dowiązanie symboliczne (nie połączone pliki))
Wszelkie pomysły na to, jak to zrobić / czy mogę to zrobić? Chcę tylko skopiować link symboliczny, nic więcej; tylko odniesienie.
sftp
nie pozwolę ci tego zrobić.rsync
może, jak to możliwessh cp ...
Odpowiedzi:
Jeśli utworzysz link symboliczny, możesz skopiować go na zdalny komputer w dowolny sposób. Kiedy to rozwiążesz, przekonasz się, że skopiowałeś tylko symboliczny link i nic więcej. Na przykład:
Aby to przetestować, najpierw utworzyłem plik tekstowy.
Następnie utwórz dowiązanie symboliczne do pliku i skompresuj go do tar gzip.
Prześlij ten plik na inny komputer, a następnie rozpakuj go:
Przekonasz się, że istnieje dowiązanie symboliczne, ale nie oryginalny plik, na który wskazał.
Oczywiście, jeśli chcesz przenieść zarówno oryginalny plik, jak i dowiązanie symboliczne, zachowując ich relację, możesz umieścić je oba w archiwum, a oba zostaną przeniesione, a dowiązanie symboliczne powinno nadal być poprawnie wskazywane na oryginalny plik podczas rozpakowywania tarball w miejscu docelowym.
źródło
sftp
( linux.die.net/man/1/sftp )! Istnieje polecenie przeznaczonesymlink
specjalnie do tego, czego potrzebujesz.Nie jest jasne, w jaki sposób chcesz poradzić sobie z dowiązaniem symbolicznym. Jak rozumiem, chcesz odtworzyć dowiązanie symboliczne w innym systemie. Dowiązania symboliczne są zależne od systemu plików, protokół używany do kopiowania plików musi o tym wiedzieć. Dobrym przykładem jest użycie
rsync
tej-a
opcji.dokładniej,
-l
opcja, ale-a
prawdopodobnie jest to, czego chcesz.Odtworzy dowiązania symboliczne bez przeciągania celów (dereferencje linków).
źródło
sftp
będzie przechodzić przez podkatalogi podkatalogami-r
, ale nie będzie podążać za dowiązaniami symbolicznymi, ponieważ abstrakuje systemy plików.sftp
obsługuje tworzenie dowiązań symbolicznych na hoście. Powinieneś przynajmniej spróbować pobrać tylko dowiązanie symboliczne (gdy dowiązanie symboliczne~/etc
->/etc/
zróbget etc
bez trailing/
) i zobacz, co się stanie. To zależy od FS serwera i klienta. Edytuj odpowiednio swoje oryginalne pytanie!Bardzo łatwe rozwiązanie (dla katalogu domowego):
lub
na przykład
w celu zapewnienia umieszczenia dowiązania .bashrc w innym (np. sieci) miejscu docelowym.
źródło
Wiem, że @polemon już na to odpowiedział.
Ale robię trochę, aby szybko rozwiązać.
Musiałem zrobić man rsync, aby wiedzieć, którego przełącznika chcę użyć ...
Chociaż w twoim przypadku musisz upewnić się, że linki nie są zepsute!
źródło
Inne odpowiedzi już wyjaśniają, jak przenieść dowiązanie symboliczne do innej maszyny. Jednak bez względu na sposób przesyłania dowiązania symbolicznego nie będzie można użyć tego dowiązania symbolicznego do uzyskania dostępu do pliku
/etc/
przez FTP, SFTP, SCP, SSH ani w żaden inny sposób. Usługi te są zazwyczaj chrootowane do danego katalogu lub w inny sposób uniemożliwia się dostęp do plików, które nie zostały jawnie udostępnione. Oczywiście zawsze istnieją sposoby na zhackowanie tego na starszych systemach, ale takie luki są zazwyczaj łatane i aktualizowane, gdy tylko zostaną znalezione. Przepraszam, nie sądzę, że to, co chcesz zrobić, będzie możliwe.źródło