Không hẳn là đúng... bạn CÓ THỂ đổi tên tệp khi đang định tuyến bằng rsync, nhưng chỉ khi bạn rsync từng tệp một và đặt tùy chọn --no-R --no-implied-dirs, sau đó đặt rõ ràng tên đích trong đường dẫn đích.
Không hoàn toàn đúng… Bạn có thể sử dụng rsync để đổi tên các tệp trong một đường dẫn, nhưng chỉ khi bạn rsync từng tệp một, đặt tùy chọn --no-R --no-impline-dirs, sau đó đặt rõ ràng tên đích trong đường dẫn đích.
Nhưng đến lúc đó, bạn có thể chỉ muốn sử dụng một công cụ khác.
Nhưng đến thời điểm này, bạn có thể muốn sử dụng một công cụ khác.
Ví dụ, cách này sẽ hiệu quả:
Ví dụ, cách này sẽ hiệu quả:
rsync --no-R --no-impied-dirs
1.2.3.4::module/$TÊN TỆP
/$PATH/$TOFILE/$NEWFILENAME
Không có cách nào để đổi tên tệp tùy ý bằng rsync. Tất cả những gì rsync có thể làm là di chuyển tệp đến một thư mục khác.
Không có cách nào để đổi tên tệp tùy ý bằng rsync. Rsync chỉ có thể di chuyển tệp sang thư mục khác.
Bạn phải sử dụng công cụ thứ hai ở phía gửi hoặc phía nhận để đổi tên tệp.
Bạn sẽ phải sử dụng một công cụ khác ở đầu gửi hoặc đầu nhận để đổi tên tệp.
BIÊN TẬP:
biên tập:
Tôi vừa nhận ra rằng câu hỏi yêu cầu đổi tên các tệp để chuyển và không cố gắng giải quyết vấn đề, rằng các tệp đã đổi tên vẫn được sao chép ngay cả khi chúng không thay đổi (đó là mối quan tâm của tôi trong câu trả lời bên dưới).
Tôi vừa nhận ra rằng câu hỏi hỏi về việc đổi tên các tệp cần chuyển, thay vì cố gắng giải quyết vấn đề các tệp được đổi tên sẽ được sao chép ngay cả khi chúng không thay đổi (đó là điều tôi sẽ tập trung vào trong câu trả lời bên dưới).
Đối với câu hỏi của bạn, bạn thực sự có thể sử dụng một cách tiếp cận với các liên kết cứng. Thay vì sao chép thư mục nguồn của bạn, hãy tạo một thư mục mới dưới dạng các liên kết cứng đến cùng một dữ liệu bằng cách sử dụng cp --recursive --link <đã đổi="" tên="">đã>
(các liên kết cứng không chiếm thêm dung lượng trên đĩa của bạn) có lẽ cũng với --không-giải-tham-chiếu
tùy chọn để tránh theo các liên kết tượng trưng.
Đối với vấn đề của bạn, thực ra bạn có thể sử dụng phương pháp với liên kết cứng. Thay vì sao chép thư mục nguồn, hãy sử dụng cp --recursive --link <đổi tên=""> để tạo liên kết cứng mới làm liên kết cứng tới cùng dữ liệu (liên kết cứng không chiếm thêm dung lượng trên đĩa) và có thể sử dụng tùy chọn --no-dereference để tránh theo các liên kết tượng trưng.đổi>
Sau đó đổi tên các tập tin trong <đã đổi="" tên="">/đã>
thư mục theo ý muốn và tải chúng lên đích.
Sau đó đổi tên theo nhu cầu
/directory và tải chúng lên đích.
Câu trả lời gốc:
Câu trả lời ban đầu là:
A nghĩ rằng thủ thuật này sử dụng --liên kết cứng
nên làm chính xác như vậy.
A Tôi nghĩ thủ thuật sử dụng --hardlink này có thể hiệu quả.
Tạo một bản sao liên kết cứng của tên tệp của bạn trong thư mục nguồn và tải lên đích. Sau đó đổi tên tệp theo ý muốn và tải lên các thay đổi -- vì các liên kết cứng được bảo toàn nên không có dữ liệu nào thực sự được chuyển. Cuối cùng, bạn có thể xóa thư mục có các liên kết cứng trong nguồn của mình, thư mục này cũng sẽ biến mất khỏi đích nếu bạn sử dụng --xóa bỏ
tùy chọn trong đồng bộ
.
Tạo một bản sao liên kết cứng của tên tệp trong thư mục nguồn và tải nó lên thư mục đích. Sau đó đổi tên tệp theo ý muốn và tải lên những thay đổi -- vì các liên kết cứng được giữ nguyên nên không có dữ liệu nào thực sự được chuyển đi. Cuối cùng, bạn có thể xóa thư mục có liên kết cứng trong thư mục nguồn và nó cũng sẽ biến mất khỏi thư mục đích nếu bạn sử dụng tùy chọn --ete với rsync.
Để minh họa bằng mã, hãy xem kết quả sau:
Để minh họa điều này bằng mã, hãy xem kết quả sau:
############### sao lưu ban đầu
$ rsync -av --hard-links --xóa nguồn sao lưu/đích đến/
gửi danh sách tập tin gia tăng
tạo thư mục sao lưu/đích đến
nguồn/
nguồn/00_chạy
nguồn/01_chia sẻ
nguồn/02_nghiên cứu
nguồn/03_cải thiện
đã gửi 495 byte đã nhận 137 byte 1.264,00 byte/giây
tổng kích thước là 160 tốc độ là 0,25
############### tạo liên kết cứng đến các tên cũ tại nguồn
$ cp --recursive --link {nguồn,.oldnames} && mv .oldnames nguồn
############## tải lên các liên kết cứng đến đích
$ rsync -av --hard-links --xóa nguồn sao lưu/đích đến/
gửi danh sách tập tin gia tăng
nguồn/
nguồn/.tên cũ/
nguồn/.oldnames/00_run => nguồn/00_run
nguồn/.oldnames/01_share => nguồn/01_share
nguồn/.oldnames/02_study => nguồn/02_study
nguồn/.oldnames/03_improve => nguồn/03_improve
đã gửi 373 byte đã nhận 96 byte 938,00 byte/giây
tổng kích thước là 320 tốc độ là 0,68
################ đổi tên các tập tin
$ nguồn cd/
$ cho f trong *; thực hiện mv $f `echo $f | tr '[:lower:]' '[:upper:]'`; thực hiện
$đĩa CD..
############## tải lên các tệp đã đổi tên (tên mới được liên kết với tên cũ)
$ rsync -av --hard-links --xóa nguồn sao lưu/đích đến/
gửi danh sách tập tin gia tăng
xóa nguồn/03_cải thiện
xóa nguồn/02_study
xóa nguồn/01_share
xóa nguồn/00_run
nguồn/
nguồn/00_RUN => nguồn/.oldnames/00_run
nguồn/01_SHARE => nguồn/.oldnames/01_share
nguồn/02_NGHIÊN CỨU => nguồn/.oldnames/02_nghiên cứu
nguồn/03_CẢI TIẾN => nguồn/.oldnames/03_cải tiến
đã gửi 409 byte đã nhận 209 byte 1.236,00 byte/giây
tổng kích thước là 320 tốc độ là 0,52
############## xóa các liên kết đến tên cũ ở nguồn và đích
$ rm -r nguồn/.oldnames/
$ rsync -av --hard-links --xóa nguồn sao lưu/đích đến/
gửi danh sách tập tin gia tăng
xóa nguồn/.oldnames/03_improve
xóa nguồn/.oldnames/02_study
xóa nguồn/.oldnames/01_share
xóa source/.oldnames/00_run
xóa nguồn/.oldnames/
nguồn/
đã gửi 160 byte đã nhận 153 byte 626,00 byte/giây
tổng kích thước là 160 tốc độ là 0,51
Thêm câu trả lời
Trên thực tế, rsync hữu ích cho một tệp duy nhất trong một số trường hợp. Nếu tệp lớn và chỉ có những thay đổi nhỏ hoặc chỉ được thêm vào, thì nó phù hợp.
Trên thực tế, rsync có thể hữu ích trong một số trường hợp đối với các tập tin đơn lẻ. Sẽ tuyệt hơn nếu tập tin có dung lượng lớn và chỉ thực hiện một số thay đổi nhỏ hoặc chỉ bổ sung một vài nội dung.
Theo trang hướng dẫn, --không-ngụ ý-dirs
chỉ ảnh hưởng đến cách --liên quan đến
hoạt động. Và --liên quan đến
giống như -R
Nhưng bạn sử dụng --không-R
, điều đó khiến tôi tự hỏi tác dụng gì --không-ngụ ý-dirs
được cho là có trong trường hợp đó?
Theo trang hướng dẫn, --no-implied-dis chỉ ảnh hưởng đến cách hoạt động của --relative. và -- tương đương với -R. Nhưng bạn đã sử dụng --no-R, điều này khiến tôi tự hỏi no-insual-dirs có tác dụng gì trong trường hợp này?
Nếu chúng ta di chuyển các tập tin vào cùng một thư mục thì sao?
Nếu chúng ta muốn di chuyển các tập tin này vào cùng một thư mục thì sao?
Tôi là một lập trình viên xuất sắc, rất giỏi!