2024/05/22

Different copy behavior in rsync scp cp and mv

ๅœจ Linux ็š„็’ฐๅขƒๅ…ง,ๆˆ‘ๅ€‘ๅธธๅธธๆœƒ้œ€่ฆๆฌ็งป็›ฎ้Œ„ๆˆ–ๆช”ๆกˆ,ไธ็ฎกๆ˜ฏๅœจๅ…ง้ƒจๆˆ–่€…ๆ˜ฏ remote,ๆฌ็งป็š„ๆ™‚ๅ€™ๅฐพๅทดๆœ‰ๆฒ’ๆœ‰ / ้€™ๅ€‹็ฌฆ่™Ÿๅœจๅนพๅ€‹ๅธธ็”จ่ทŸๆฌ็งปๆœ‰้—œ็š„ๆŒ‡ไปคๅฏฆ้š›่กŒ็‚บๆœ‰ๅพˆๅคง็š„ๅทฎ็•ฐ,ไปฅไธ‹้ข็š„็ตๆง‹่ˆ‰ไพ‹。

src/first.txt
src/second/second.txt

dest/

src ๆ˜ฏไพ†ๆบ็›ฎ้Œ„,dest ๆ˜ฏ็›ฎๆจ™็›ฎ้Œ„。

cp

command result
cp -rv src dest/ dest/src/first.txt
dest/src/second/second.txt
cp -rv src/ dest/ dest/src/first.txt
dest/src/second/second.txt
cp -rv src/* dest/ dest/first.txt
dest/second/second.txt

cp ้€™ๅ€‹ๆŒ‡ไปคไธๆœƒ้šจ / ๆœ‰ๆ‰€ๅฝฑ้Ÿฟ,่ฆไธ่ฆ src ้€™ๅฑคๅ–ๆฑบๆ–ผไฝ ๆœ‰ๆฒ’ๆœ‰ๆŒ‡ๅฎšไป–ไปฅไธ‹็š„ๅ…งๅฎน้€ฒ่กŒ่ค‡่ฃฝ。

scp

command result
scp -r src dest/ dest/src/first.txt
dest/src/second/second.txt
scp -r src/ dest/ dest/src/first.txt
dest/src/second/second.txt
scp -r src/* dest/ dest/first.txt
dest/second/second.txt

scp ็š„่ค‡่ฃฝ่กŒ็‚บ่ทŸ cp ๆ˜ฏไธ€ๆจกไธ€ๆจฃ็š„。

rsync

command result
rsync -rv src dest/ dest/src/first.txt
dest/src/second/second.txt
rsync -rv src/ dest/ dest/first.txt
dest/second/second.txt
rsync -rv src/* dest/ dest/first.txt
dest/second/second.txt

rsync ๆ˜ฏๆœƒๅ—ๅˆฐ src ๅพŒๆ–นๆœ‰ๆฒ’ๆœ‰ / ๅฝฑ้Ÿฟ็ตๆžœ็š„。

mv

command result
mv src dest/ dest/src/first.txt
dest/src/second/second.txt
mv src/ dest/ dest/src/first.txt
dest/src/second/second.txt
mv src/* dest/ dest/first.txt
dest/second/second.txt

็ธฝ็ตไพ†่ฌ›,cp、scp、mv ้€™ไธ‰ๅ€‹ๆฌ้‹็š„่กŒ็‚บๆ˜ฏไธ€่‡ด็š„,ๆœƒๆœ‰ไธๅŒๅฝฑ้Ÿฟ็š„ๅชๆœ‰ rsync,ๆ‰€ไปฅไฝฟ็”จ rsync ๆ™‚่ฆๆฏ”่ผƒๆณจๆ„ไธ€้ปž,ไนŸๅฏไปฅ่ชชไฝ ่ฆไธๅŒ…ๅซ็›ฎ้Œ„็š„่ฉฑ,ๅ››ๅ€‹ๆŒ‡ไปคๅฐฑ้ƒฝๅŠ  /*,่ฆๅŒ…ๅซ็š„่ฉฑๅฐฑๅฐพๅทดไธ่ฆ /,้€™ๆจฃๆฏ”่ผƒๅฅฝ่จ˜。