บน Linux (Debian, Ubuntu Mint ... ),
มีคำสั่งตัวเลือกหรือสิ่งที่ฉันสามารถใช้เพื่อถ่ายโอนไฟล์ไปยังผู้ใช้รายอื่นโดยไม่ต้องทำ:
sudo mv /home/poney/folderfulloffiles /home/unicorn/
sudo chown -R unicorn:unicorn /home/unicorn/folderfulloffiles
บน Linux (Debian, Ubuntu Mint ... ),
มีคำสั่งตัวเลือกหรือสิ่งที่ฉันสามารถใช้เพื่อถ่ายโอนไฟล์ไปยังผู้ใช้รายอื่นโดยไม่ต้องทำ:
sudo mv /home/poney/folderfulloffiles /home/unicorn/
sudo chown -R unicorn:unicorn /home/unicorn/folderfulloffiles
คำตอบ:
ใช้rsync(1):
rsync \
--remove-source-files \
--chown=unicorn:unicorn \
/home/poney/folderfulloffiles /home/unicorn/
usermapและgroupmapตัวเลือกต่างๆเช่นกัน
mvมันไม่ได้ใช่มั้ย คัดลอกเท่านั้น? หรือมันmvได้หรือไม่
ตาม @Kevin ในความคิดเห็นด้านล่าง--file - |pipeไวยากรณ์ซ้ำซ้อน ดังนั้นฉันจึงลบมัน
สิ่งนี้สามารถทำได้ด้วยtar:
sudo tar -C${SRC_DIR} --remove-files --group=unicorn --owner=unicorn -c ./* |
sudo tar -C${TGT_DIR} -pvx
-f -ค่อนข้างแน่ใจว่ามีนัยยะที่ปลายทั้งสอง
f -ส่วน
s=/home/poney/; f=folderfulloffiles; d=/home/unicorn/
sudo mv $s$f $d && sudo chown -R unicorn:unicorn $d$f
เกี่ยวกับความยาวเท่ากันกับคำตอบอื่น ๆ และโน้ตเนื่องจากพวกเขาทั้งหมดใช้การเรียกไลบรารี่เดียวกันภายใต้ประทุนพวกเขาทั้งหมดทำสิ่งเดียวกัน - เว้นแต่ว่าเป็น Gilles โน้ตสิ่งนี้อยู่ในระบบไฟล์และอุปกรณ์เดียวกัน ซึ่งในกรณีนี้mvเป็นจริงเปลี่ยนชื่อซึ่งทำให้มันมีประสิทธิภาพมากขึ้นกว่าหรือrsynctar
:แทนที่จะ.จัดการกับเมื่อchown?
chownมักจะใช้เวลาทั้งสองและ: .
nu=unicorn h=/home f=folderfulloffiles ; sudo mv $h/poney/$f $h/$nu/$f ; sudo chown -R ${nu}:$nu $_- แม้ว่ามันจะเป็นจุดที่คำตอบของคุณแทบจะไม่ดี แต่ฉันก็ยอมแพ้แล้ว