Scp පිටපත් නාමාවලි පුනරාවර්තනය කළ හැකිද?


616

දැනට මට එක් .tarගොනුවක් පමණක් පිටපත් කළ හැකිය . නමුත් නැවත නැවත නාමාවලි පිටපත් කරන්නේ scpකෙසේද?

Answers:


996

ඔව්, භාවිතා කරන්න -r:

scp -rp sourcedirectory user@dest:/path
  • -r යන්නෙන් පුනරාවර්තන වේ
  • -p මුල් ගොනුවෙන් වෙනස් කිරීමේ වේලාවන්, ප්‍රවේශ වේලාවන් සහ මාතයන් ආරක්ෂා කරයි.

සටහන: මෙමඟින් sourcedirectoryඅභ්‍යන්තරය නිර්මාණය වන අතර /pathඑමඟින් ගොනු ඇතුලත් වේ/path/sourcedirectory


10
කෙසේ වෙතත් මෙය සිම්ලින්ක් ආරක්ෂා නොකරන බව මතක තබා ගන්න.
CpnCrunch

14
බව සටහන -pr(ආපසු හැරවිය සඳහා විකල්ප) ෆෝල්ඩර, bur වෙනුවට ඔවුන්ගේ ඉලක්ක ගත බහලුම වෙත අන්තර්ගත (ඇත්ත, විකල්ප කරුණු සඳහා) පිටපත් කිරීමට නොහැකි වනු ඇත.
pms

178

පෙර පිළිතුරු තාක්‍ෂණිකව නිවැරදි වුවත්, rsyncඒ වෙනුවට භාවිතා කිරීම ගැනද සලකා බැලිය යුතුය . rsyncයැවීමේ සහ ලැබීමේ පැතිවල දත්ත වෙනස් යාන්ත්‍රණයක් සමඟ සංසන්දනය කරයි, එම නිසා කලින් යවා ඇති දත්ත නැවත යැවීමට අවශ්‍ය නොවේ.

ඔබ දුරස්ථ යන්ත්‍රයකට යමක් කිහිප වතාවක් පිටපත් කිරීමට යන්නේ නම්, භාවිතා කරන්න rsync. ඇත්ත වශයෙන්ම, rsyncසෑම විටම භාවිතා කිරීම හොඳය, එයට ගොනු අවසර සහ හිමිකම පිටපත් කිරීම සහ ඇතැම් ලිපිගොනු හෝ නාමාවලි බැහැර කිරීම වැනි දේ සඳහා වැඩි පාලනයක් ඇති බැවිනි. සාමාන්යයෙන්:

$ rsync -av /local/dir/ server:/remote/dir/

දුරස්ථ නාමාවලියක් සමඟ දේශීය නාමාවලිය සමමුහුර්ත කරයි. ඔබ එය දෙවන වර ධාවනය කළහොත් සහ දේශීය නාමාවලියෙහි අන්තර්ගතය වෙනස් වී නොමැති නම්, කිසිදු දත්තයක් මාරු නොකෙරේ - scpසෑම අවස්ථාවකදීම ධාවනය කිරීමට හා පිටපත් කිරීමට වඩා කාර්යක්ෂම වේ .

එසේම, rsyncබාධා කිරීම් වලින් මාරුවීම් වලින් පහසුවෙන් සුවය ලබා ගැනීමට ඔබට ඉඩ සලසයි scp.

අවසාන වශයෙන්, rsyncපෙරනිමියෙන් නවීන අනුවාදයන් ssh ඉක්මවා යයි, එබැවින් scpදැනටමත් ක්‍රියාත්මක වන්නේ නම්, එය rsyncප්‍රතිස්ථාපනය කළ යුතුය.


1
rsyncවඩා කාර්යක්ෂම බව මම එකඟ වෙමි . එය දැනට නොකරන එක් දෙයක් නම් scpදුරස්ථ ධාරකයන් අතර පිටපත් කිරීමට ඉඩ දීමයි (අවම වශයෙන් ඒවායින් එකක් මත rsync සේවාදායකය ධාවනය නොකර).
සෙඩ්රික් නයිට්

3
-av: v යනු වාචික සඳහා වන අතර, ලේඛනාගාරයක් සඳහා වන අතර එය -rlptgoD සඳහා කෙටිමඟකි, එය පුනරාවර්තන, අයිතිවාසිකම් හිමිකරුගේ දිනයන් සහ සබැඳි ආරක්ෂා කරයි. ඔබට අවශ්‍ය වන්නේ පුනරාවර්තන භාවිතය පමණි-r
pdem


12

පුනරාවර්තන පිටපත් විකල්පය '-r' (කුඩා අකුරු)

scp -r

සාමාන්‍ය දේශීය පුනරාවර්තන පිටපත් විකල්පය '-R' සමඟ මම පටලවා ගන්නා (ඉහළ නඩුව)

cp -R

2
මට අවශ්‍ය වූයේ cp සහ scp අතර වෙනස පෙන්වා දීමට -r සහ -R එක සමාන නොවන බවයි. unix.stackexchange.com/questions/18712/…
තාරුන්

7

හොඳම ක්‍රමය වන්නේ SSH හරහා rsync භාවිතා කිරීමයි

rsync -a -essh /source/ user@dest-server:/dest/

rsync -a -essh user@source-server:/source/ /dest/

මගේ ප්‍රියතම විකල්පයන් වන්නේ -Pazvessh --delete:

  • -a: සංරක්ෂිත මාදිලිය (සිම්ලින්ක් සංරක්ෂණය කිරීම ඇතුළුව සුපුරුදු පොදු විකල්ප රාශියක් ඇතුළත් කරන්න)
  • -z: සම්පීඩනය
  • -v: verbose: ගොනු පෙන්වන්න
  • -P: කළ ගොනු / ඉතිරි ගොනු ලෙස ප්‍රගතිය පෙන්වන්න
  • -e ssh: ssh ප්‍රොටෝකෝලය තුළ rsync කරන්න
  • --delete: ප්‍රභවයේ නොමැති ගමනාන්තයේ ගොනු මකන්න

rsyncමා භාවිතා කළ සියලුම අනුවාදයන් sshපෙරනිමියෙන් භාවිතා කරනු ඇත, එබැවින් -esshඅවශ්‍ය නොවනු ඇත. දුරස්ථ ධාරකයට සම්බන්ධ වීමට භාවිතා කරන විධානය තේරීම සැබවින්ම පුනරාවර්තව පිටපත් කිරීමට සම්බන්ධ නොවේ.
kasperd

4

පුනරාවර්තන පිටපත් ධජය සෙවීමෙන් පසුව සහ මෙම පෝස්ටයට ස්තූතියි එය සාර්ථකව භාවිතා කිරීමෙන් පසුව, මම යෝජනාවක් පමණක් පළ කිරීමට කැමැත්තෙමි.

ඔබ ඩිරෙක්ටරියක් පිටපත් කරන්නේ නම් (පුනරාවර්තන ලෙස). සමහර විට ලිපිගොනු සම්පීඩිත ලෙස යවනු ලැබුවහොත් ඔබට මාරුවීමේදී කාලය ඉතිරි කර ගත හැකිය

මම අවසානයේ කළේ:

local$ tar -czvf local.tar.gz directory/
local$ scp local.tar.gz user@remote:/directory
ssh user@remote
remote$ tar -xzvf local.tar.gz

මෙය උපකාරී වේ යැයි සිතමි


ගොනු දිගුව විය යුතුය .tar.gzහෝ .tgzගොනුව gzipped තාර ලේඛනාගාරයක් බැවින් ( -zධජය භාවිතා කරන බැවින්).
anthonybell

2

මෙම සරල විධානය සමඟ ඔබට සම්පීඩිත ලේඛනාගාරයකට ඩිරෙක්ටරියක් පුනරාවර්තනය කළ හැකිය:

ssh -p 22 user@address-to-copy-from.com  'cd /parent/directory && tar zcvf - directory_to_copy' > /destination/on/your/machine/archive_name.tgz

උදාහරණයක් ලෙස, ඔබ /var/logවෙතින් අන්තර්ගතය පිටපත් domain.comකිරීමට ~/logs.tgz:

ssh -p 22 user@domain.com  'cd /var && tar zcvf - log' > ~/logs.tgz

පයිප්ප භාවිතා කිරීමෙන් ඔබට ඉලක්ක පද්ධතියේ ගොනු උකහා ගත හැකිය. මෙම විධානය හි අන්තර්ගතය පිටපත් කරනු /var/logදී domain.comගැනීමට ~/destination/logඔබේ පද්ධතිය මත:

ssh -p 22 user@domain.com  'cd /var && tar zcvf - log' | tar xzf - -C ~/destination

නාමාවලියක් පිළිබිඹු කිරීමට ඔබ බොහෝ විට භාවිතා කළ යුතුය rsync...


1

පරිශීලකයාගේ මුරපදය අන්තර්ක්‍රියාකාරීව ඇතුළත් කරනවාට වඩා පරාමිතියක් ලෙස යැවීමට ඔබ කැමති නම්, ඔබට sshpass( sudo apt-get install -y sshpass) භාවිතා කළ හැකිය .

උදාහරණයක්:

sshpass -p 'remote_password' scp -rp /src/folder myremoteusername@122.10.12.123:/dest/folder

0

ඕනෑම පද්ධතියක පුනරාවර්තන ලෙස නාමාවලි පිටපත් කිරීමට ඔබට scp විධානය සමඟ -r විකල්පය භාවිතා කළ හැකිය. ඔබට වෙනත් යමක් අවශ්‍ය නම් scp විධාන නිබන්ධනය බලන්න . -r විකල්පය බොහෝ ලිනක්ස් විධාන වල පුනරාවර්තන ක්‍රියාකාරිත්වය නියෝජනය කරයි.


1
සත්‍ය වුවත්, -rවිකල්පය මීට වසර ගණනාවකට පෙර යෝජනා කර ඇති අතර එය පිළිගත් පිළිතුරයි.
රැල්ෆ් ෆ්‍රීඩ්ල්

-3

තවත් (නැවත නැවත භාවිතා කිරීම සඳහා වඩා හොඳ) විකල්පයක් වන්නේ එන්එෆ්එස් භාවිතා කිරීමයි - එන්එෆ්එස්-කර්නල්-සේවාදායකය සහ එන්එෆ්එස් කොටස් සකස් කරන්නේ කෙසේද යන්න පරීක්ෂා කරන්න.


4
මෙය සම්පූර්ණ විකාරයකි. ඔබ භාවිතා කරන නිමක් නැති අවස්ථා තිබේ, scpනමුත් NFS විකල්පයක් නොවේ.
ස්වේන්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.