Làm thế nào để sao chép symlink dưới dạng symlink từ máy này sang máy khác?


13

Giả sử tôi có hai hệ thống giống hệt nhau. Trên hệ thống đầu tiên tôi đã tạo một liên kết tượng trưng. Trên cái thứ hai tôi muốn sao chép symlink đó qua sftp và symlink sẽ hoạt động như nhau (nghĩa là nếu symlink liên kết đến /etc/, sau khi sao chép nó, chỉ có symlink sẽ được sao chép và chỉ có symlink (không phải các tệp được liên kết))

Bất kỳ ý tưởng về làm thế nào tôi có thể làm điều này / nếu tôi có thể làm điều này? Tôi chỉ muốn sao chép liên kết tượng trưng, ​​không có gì khác; chỉ là tài liệu tham khảo.


nó không hoạt động như bạn mô tả?
mikeerv 10/11/2015

1
sftpsẽ không để bạn làm điều đó. rsynccó thể, như có thểssh cp ...
roaima

Điều tôi đang cố gắng đạt được là sao chép trên bản đồ tượng trưng ... Tôi không muốn các tệp .. Tôi chỉ muốn đoạn mã có chữ FOLDER> ETC ... Tôi chỉ muốn tạo một liên kết tượng trưng từ máy chủ và di chuyển nó đến máy chủ cần thiết trên ... tôi đang cố gắng hack ra khỏi một tệp đính kèm
TheHidden 10/11/2015

1
@roaima ssh cp? như trong scp? làm sao?
kỹ thuật khó khăn

Câu trả lời:


12

Nếu bạn mở liên kết tượng trưng, ​​thì bạn có thể sao chép tarball qua máy từ xa theo bất kỳ cách nào bạn muốn. Khi bạn gỡ bỏ nó, bạn sẽ thấy rằng bạn chỉ sao chép liên kết tượng trưng và không có gì khác. Ví dụ:

Để kiểm tra điều này, đầu tiên tôi tạo một tệp văn bản.

echo this is a test > file.txt

Sau đó tạo một symlink đến tập tin và nén nó vào một tar gzip.

ln -s file.txt link.lnk
tar czvf tarball.tar.gz link.lnk

Chuyển tập tin này sang máy khác của bạn và sau đó giải nén nó:

tar xzvf tarball.tar.gz

Bạn sẽ thấy rằng symlink ở đó, nhưng không phải là tệp gốc mà nó đã trỏ đến.

Tất nhiên, nếu bạn muốn chuyển cả tệp gốc và liên kết tượng trưng trong khi duy trì mối quan hệ của chúng, bạn có thể đặt cả hai trong tarball và cả hai sẽ được chuyển và liên kết tượng trưng vẫn phải được trỏ chính xác vào tệp gốc khi bạn giải nén tarball ở vị trí đích.


Điều này khá thú vị nhưng thật đáng buồn là tôi không nghĩ nó sẽ giúp tôi, tôi không có quyền kiểm soát nô lệ, tất cả các SFTP này được thực hiện thông qua API để khóa các thư mục, nhưng tôi đang cố gắng hack hộp bằng symlink vì có một chút một trường hợp khẩn cấp và tôi cần có được quyền truy cập từ chủ nhân đẩy các bản cập nhật được chọn, vì lý do an toàn, các tệp tôi gửi không thực thi, nhưng nếu tôi có thể liên kết symlink, tôi có thể tiêm mã vào một quy trình đã tồn tại (về mặt lý thuyết) bằng cách thay thế tệp qua liên kết tượng trưng ... nhưng để làm điều đó, tôi cần sao chép một liên kết tượng trưng trên 100% thô :(
TheHidden 10/11/2015

@ user1779617 Vẫn chưa rõ ý của bạn với "nô lệ" và "chủ", bởi vì bạn dường như sử dụng cả hai thuật ngữ cho cả máy chủ và máy khách có thể hoán đổi cho nhau. Nếu bạn cần tạo một liên kết tượng trưng trên máy chủ , bạn có thể làm điều đó với SFTP, tuy nhiên tùy thuộc vào cấu hình, bạn có thể không thể nhìn ra bên ngoài vương quốc được chroated của SFTP-daemon. Vui lòng tham khảo trang người đàn ông của sftp( linux.die.net/man/1/sftp )! Có lệnh symlinkđặc biệt cho những gì bạn dường như cần.
Polemon

5

Có một chút không rõ ràng chính xác làm thế nào bạn muốn đối phó với symlink. Theo tôi hiểu, bạn muốn tạo lại liên kết tượng trưng trên hệ thống khác. Symlinks phụ thuộc vào hệ thống tập tin, giao thức được sử dụng để sao chép tập tin phải nhận thức được điều đó. Một ví dụ tốt là sử dụng rsyncvới -atùy chọn.

cụ thể hơn, -ltùy chọn, nhưng -acó lẽ là những gì bạn muốn.

Nó sẽ tạo lại các liên kết tượng trưng mà không kéo các mục tiêu qua (hội thảo các liên kết).


Tôi thấy hm, vì vậy sẽ không có cách nào để sao chép nó như một tập tin và giữ lại liên kết? Tôi chỉ có khả năng trực tiếp di chuyển các tập tin qua tôi đã hy vọng xây dựng liên kết tượng trưng trên hệ thống giống hệt nhau và sao chép nó hoặc tôi chỉ đang hy vọng?
TheHidden 10/11/2015

@ user1779617 trước hết: khi bạn nói "di chuyển", bạn thực sự có nghĩa là "di chuyển" hay "sao chép"? Bởi vì "di chuyển" ngụ ý xóa tệp gốc (đây cũng là lý do tại sao tôi đã chỉnh sửa câu hỏi của bạn). Điều thứ hai: bạn có bị giới hạn trong một giao thức truyền tệp cụ thể (như chỉ FTP) không? Nếu vậy, chúng ta nên thảo luận về nó trong phạm vi đó và các hệ thống tập tin mà chúng ta đang nói đến.
Polemon

Chỉ SFTP, chỉ tải xuống từ máy cần liên kết tượng trưng, ​​vì vậy tôi có nghĩa là sao chép từ bản gốc sang SFTP nô ​​lệ và kết nối sftp chỉ từ nô lệ.
TheHidden 10/11/2015

@ user1779617 Tôi giả sử bạn có nghĩa là "khách hàng" (nô lệ) và "máy chủ" (chủ). sftpsẽ duyệt qua các thư mục con với công -rtắc, nhưng không tuân theo các liên kết tượng trưng, ​​vì nó trừu tượng hóa các hệ thống tập tin. sftphỗ trợ tạo symlink trên máy chủ. Ít nhất bạn nên thử tải xuống chỉ liên kết tượng trưng (khi liên kết tượng trưng là ~/etc-> /etc/thực hiện get etcmà không theo dõi /) và xem điều gì sẽ xảy ra. Nó phụ thuộc vào FS của máy chủ và máy khách. Vui lòng chỉnh sửa câu hỏi ban đầu của bạn cho phù hợp!
Polemon

3

Tôi biết @polemon đã trả lời điều này.

Nhưng làm chút tad của tôi cho giải pháp nhanh chóng.

Tôi đã phải thực hiện rsync để biết công tắc nào tôi muốn sử dụng ...

rsync -avz -e ssh /file or sym link/to/copy/ user@ip:/dest/path/

Mặc dù, trong trường hợp của bạn, bạn cần đảm bảo rằng các liên kết không bị hỏng!


2

Một giải pháp rất dễ dàng (cho thư mục chính):

tar -c SYMLINKFILE | ssh machine 'tar -x'

hoặc là

tar -c SYMLINKFILE | ssh machine 'tar -xC /some/other/location  '

ví dụ

tar -c .bashrc | ssh another_machine 'tar -x'

để cung cấp một .bashrc được liên kết tới một đích khác (ví dụ: mạng).


0

Các câu trả lời khác đã giải thích làm thế nào để chuyển một liên kết tượng trưng sang một máy khác. Tuy nhiên, bất kể bạn chuyển symlink như thế nào, bạn sẽ không thể sử dụng symlink này để truy cập một tệp /etc/qua FTP, SFTP, SCP, SSH hoặc bất kỳ cách nào khác. Các dịch vụ này có xu hướng được phân bổ vào một thư mục nhất định hoặc ngăn không cho phép cung cấp quyền truy cập vào các tệp không được chia sẻ rõ ràng. Tất nhiên, luôn có cách để khắc phục điều này trên các hệ thống cũ, nhưng các lỗ hổng như vậy có xu hướng được vá và nâng cấp ngay khi chúng được tìm thấy. Tôi xin lỗi, tôi không nghĩ những gì bạn muốn làm là có thể.


đủ công bằng, ít nhất tôi đã thử tôi đoán :(
TheHidden 10/11/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.