sách gpt4 ai đã đi

Sử dụng rsync để đổi tên tệp trong khi sao chép bằng --files-from?

In lại Tác giả: trợ lý lỗi Thời gian cập nhật: 2023-10-26 21:26:07 32 4
mua khóa gpt4 Nike



Sử dụng rsync, làm thế nào tôi có thể đổi tên tệp khi sao chép với đối số --files-from? Tôi có khoảng 190.000 tệp, mỗi tệp cần được đổi tên khi sao chép từ nguồn sang đích. Tôi dự định có danh sách các tệp trong tệp văn bản để chuyển đến đối số --files-from.

Khi sử dụng rsync, làm thế nào để đổi tên tệp khi sao chép bằng tham số --files-from? Tôi có khoảng 190.000 tệp, mỗi tệp cần được đổi tên khi sao chép từ tệp nguồn sang tệp đích. Tôi dự định đưa danh sách các tệp vào một tệp văn bản để truyền vào tham số --files-from.


Thêm câu trả lời
Câu trả lời tuyệt vời được đề xuất

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.


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ư -RNhư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?

32 4 0
Trợ lý lỗi
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com