Làm thế nào tôi có thể nhận được lệnh scp để ghi đè thư mục đích


41

Tôi đang sử dụng lệnh scp để sao chép một số tệp vào máy tính từ xa, như bạn làm với scp :)

Tôi lưu ý rằng hành vi mặc định của bản sao scp cho các tệp là ghi đè lên bất kỳ tệp nào hiện có. Bây giờ tôi muốn sao chép một thư mục để tôi thực hiện điều tương tự:

scp -r <source_path> user@myOtherPc:<dest_path>

Trong đó các phần trong <> là đường dẫn thư mục của tôi. Tuy nhiên khi tôi chạy nó, tôi nhận được thông báo "tập tin tồn tại". Có cách nào để giái quyết vấn đề này không? một số loại lực lượng ghi đè?

Cảm ơn, thức ăn gia súc


2
Bạn có thể cho một số ví dụ về con đường? Tôi không thực hiện để tái tạo điều này trên hệ thống của tôi. Ngoài ra, bạn đã kiểm tra quyền truy cập tập tin?
Levans

Nó có cung cấp cho bạn bất kỳ thông tin hữu ích nào nếu bạn sử dụng chế độ dài dòng không? -v. Ngoài ra, bạn đang sử dụng đường dẫn tuyệt đối hay tương đối ở phía đích? Tôi nghĩ rằng nếu thư mục đích đã tồn tại, nó sẽ tạo đường dẫn nguồn bên trong thư mục đích chứ không phải ghi đè ( testdir/testdir)
beroe

2
Thật kỳ lạ khi bạn có được điều này. Được cho là scp không có noclobber ...
beroe

1
@Levans Tôi không kiểm tra quyền, tôi mới xem qua và tôi nghĩ bạn có thể đúng. Tôi đã xóa mọi thứ trong vùng đích và bắt đầu lại chỉ bằng lệnh "scp" và sử dụng người dùng "root" và tôi có thể sao chép các tập tin / thư mục nhiều lần :) ... Tôi không chắc chắn 100% vấn đề cấp phép nào đã có, nhưng bây giờ tôi có một "xử lý" về vấn đề mà tôi có thể có thể hình dung được, cảm ơn
code_fodder

1
@beroe Vâng, đây cũng là những gì tôi nghĩ ... nó đã làm tôi bối rối, nhưng tôi nghĩ rằng tôi đã mắc một số lỗi người dùng ở đây với các quyền, tôi chưa phải là chuyên gia linux :( Nhưng tôi sẽ thử verbose-ness lần sau tôi có một vấn đề như vậy để có thêm thông tin, cảm ơn. Ngoài ra tôi đã nhận thấy rằng đôi khi bạn nhận được "thư mục bên trong thư mục" xảy ra ... nhưng đó là một vấn đề khác: o
code_fodder

Câu trả lời:


27

Như đã nói, scp vui vẻ ghi đè bất kỳ tập tin nào đã có mặt.

Sự cố "tệp tồn tại" chỉ có thể xảy ra khi bạn có một số quy trình khác (như quy trình scp đồng thời hoặc một cái gì đó khác) ghi các thư mục và tệp vào cùng một đích. Thay vào đó hãy xem xét sử dụng rsync.


1
Tôi sẽ chỉ thêm: ... miễn là bạn có quyền ghi vào tệp đó ...
SDsolar

Nhưng đối với các thư mục, nó hợp nhất thư mục hoặc thay thế nó?
Dr_ITH

5

Giống như Levans, tôi đã không thể sao chép điều này, nhưng bạn đã xem xét sử dụng rsync thay vì ssh chưa? Nếu bạn đang sao chép số lượng lớn tệp, rsync có thể là một lựa chọn tốt hơn so với scp. Có một số hướng dẫn tốt cho nó trực tuyến, chẳng hạn như:

http://troy.jdmz.net/rsync/index.html https://calomel.org/rsync_tips.html

Liên kết đầu tiên đó xử lý các bản sao lưu tự động thông qua cron, vì vậy một số hướng dẫn (như tạo khóa ssh không có cụm mật khẩu) có thể không phù hợp với bạn.


Thật thú vị, tôi không biết bạn có thể sử dụng rsync theo cách đó ... chỉ cần xem nhanh trang người đàn ông và có vẻ như bạn có thể sử dụng nó theo cách rất giống với scp với <source_path> và <user @ host: Dest_path> tham số. Tôi không chắc chắn 100% đó là những gì tôi muốn vì tôi luôn muốn sao chép / ghi đè mà không quan tâm đến trạng thái của số phận, nhưng vẫn là một ý tưởng hay :)
code_fodder

Vâng, nó có thể đáng để chơi bởi vì nó nên sao chép tập tin nếu nó đã bị thay đổi (hoặc một phần của tập tin đã bị thay đổi, tôi cần kiểm tra lại và tôi hơi mệt một chút hiện nay).
Ben

haha .... đừng lo lắng về việc kiểm tra nó, tôi có thể làm những thứ đó ... nhưng cảm ơn vì thông tin :)
code_fodder

Ah, tuyệt, tôi có thể ngừng nhìn que diêm như một phương tiện để mở mí mắt của tôi. ;)
Ben

1
Điều này có thể làm việc, nhưng là một chút như sử dụng búa tạ để đánh một con ruồi. ;-)
SDsolar

3

Bạn sẽ nhận được thông báo lỗi này nếu thư mục đích đã chứa một tệp có cùng tên với thư mục nguồn mà bạn đang cố gắng chuyển. Bạn không thể có một tệp có cùng tên với một thư mục trong cùng thư mục.

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.