ගමනාන්තයේ පවතින ගොනු ප්‍රතිස්ථාපනය නොකර scp කරන්න


175

ගමනාන්ත නාමාවලියෙහි අන්තර්ගතය ප්‍රතිස්ථාපනය නොකර සම්පූර්ණ නාමාවලියම එකම නාමාවලියකට පිටපත් කරන්නේ කෙසේද? (ඒ වෙනුවට, ගමනාන්ත ෆෝල්ඩරයේ අන්තර්ගතයට එක් කිරීමට මම කැමතියි)


1
ඔව්, එය වේ ප්රයෝජනවත් වැඩසටහන / උපයෝගිතා එක විකල්පයක් ඇති වූ විට නැත "පමණක් එය කළ හැකි නම් ..." කරදර කාරී! මෙම අවස්ථාවේ දී "--noclobber"!
මයික් ඩබ්ලිව්

Answers:


155

මුල් නාමාවලියෙහි නවතම ගොනු පමණක් යාවත්කාලීන කිරීමට හෝ ගමනාන්තයේ දැනටමත් පවතින සියලුම ලිපිගොනු මඟ හැරීමට අවශ්‍ය නම් භාවිතා rsyncකර සමත් -uවන්න --ignore-existing.

rsync -au /local/directory/ host:/remote/directory/
rsync -a --ignore-existing /local/directory/ host:/remote/directory/

( /ප්‍රභව පැත්තේ ඇති සටහන සැලකිල්ලට ගන්න : එය නොමැතිව එය rsyncනිර්මාණය වනු ඇත /remote/directory/directory.)


Nt ඇන්තන් මට ඔබේ අදහස තේරෙන්නේ නැති අතර මට චන්ද්‍රගේ පිළිතුරක් හෝ අදහසක් නොපෙනේ. --ignore-existingප්‍රතිස්ථාපනය නොකර එකතු කරයි, ඔබ දකින දත්ත නැතිවීම කුමක්ද?
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

කණගාටුයි, මම ඔබේ පළමු උදාහරණය දෙස බැලුවෙමි, එය ඔබට දත්ත නැතිවිය හැකි ස්ථානයකි (සහ IMHO යනු OP ඉල්ලා සිටි දෙය නොවේ), ඔබ ඇතුළත් කරන්නේ නම් --ignore පවතින දත්ත නැතිවීම සිදුවිය යුතු නොවේ.
ඇන්තන්

දුරස්ථ පද්ධතියට rsyncපහසුවෙන් ලබාගත නොහැකි නම් මෙය උදව් නොකරයි .... (Win32-OpenSSH මෙන්)
ගර්ට් වැන් ඩෙන් බර්ග්

@GertvandenBerg rsync වින්ඩෝස් මත ස්ථාපනය කිරීම පහසුය, SSH ට වඩා අමාරු නැත.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

Il ගිල්ස්: ඇත්ත, නමුත් සියලු විකල්පයන් සිග්වින් ඩීඑල්එල් සම්බන්ධ වන බව පෙනේ ... (ඕපන් එස්එස්එච් හි එම්එස් වරායේ වර්තමාන තත්වය වන්නේ එස්සීපී බිඳ දැමීම සඳහා scp මත සම්පීඩනය සක්‍රීය කිරීම ප්‍රමාණවත් වේ ...) (Win32 හරහා rsync ක්‍රියාකාරී වීම -OpenSSH ද සුළුපටු නොවන බව පෙනේ - එය කාලයත් සමඟ වැඩිදියුණු වේ යැයි බලාපොරොත්තු වේ) (සොලාරිස් 10 යනු තෙවන පාර්ශවීය පැකේජයක් සහ --rsync-pathඅවශ්‍ය වන අනෙක් උදාහරණයයි )
ගර්ට් වැන් ඩෙන් බර්ග්

92

ඔබට ලිපිගොනු ලිවීමට අවසර තිබේ නම් scp ඒවා නැවත ලියයි.

වෙනත් වචන වලින් කිවහොත්: scpඉහත සඳහන් ලිපිගොනු වල ලිඛිත අවසරයන් තාවකාලිකව ඉවත් කිරීමෙන් ඔබට effectively ලදායී ලෙස මඟ හැරිය හැක (ඔබ ලිපිගොනු හිමිකරු නම්, එනම්).


6
මේ සඳහා ස්තූතියි. හරියටම මම සොයන උපක්‍රමයද?
සැචරීන්

ගොනු නැවත පිටපත් කිරීමට වග බලා ගන්න, එසේ කිරීමට ඔබ * එකතු කරයි. උදාහරණයscp -r user@server.com:/location/of/files/* /local/location/
රික්

1
සොයා ගන්න. -type f -exec chown root: root {} \;
ලින්ග්

1
නාමාවලියෙහි ඇති සමහර ලිපිගොනු පමණක් නැවත ලියනු ඇතැයි අපේක්ෂා කරන අසාමාන්‍ය අවස්ථාවක ("ආරක්‍ෂිත" නොවේ නම්), සහ ගොනු අවසරයන් ගොනු හරහා ඒකාකාරී නොවේ නම්, මෙම විසඳුම ක්‍රියා නොකරනු ඇත. එසේ නොමැති නම් එය තරමක් සරල හා .ලදායී වේ.
sancho.s ReinstateMonicaCellio

කවුළුවල මෙය සිදු කිරීම සඳහා සියලුම ලිපිගොනු තෝරන්න, දකුණු ක්ලික් කරන්න -> ගුණාංග -> කියවීමට පමණි
BenJammin

12

දිනය අනුව ඔබට නව ගොනු පමණක් පිටපත් කළ හැකිය. භාවිතfind

scp  `find /data/*.gz -type f -mtime +7` USER@SERVER:/backup/

1
+7 යන්නෙන් අදහස් කරන්නේ කුමක්ද?
ෆ්‍රැන්සිස් කිම්

RanFrancisKim යන්නෙහි තේරුම දින 7 කට පෙර වෙනස් කරන ලදි. එබැවින් මෙම විමසුම පසුගිය දින 7 තුළ වෙනස් කරන ලද ඕනෑම * .gz ගොනු තෝරන්න
වඩීම් එරමෙව්

4
+7 ඇත්ත වශයෙන්ම දින 7 කට පෙර ඇඟවෙන්නේ නැද්ද?
ජෙෆ්

2
ඔව් එහි තේරුම "දින 7 කට පෙර" යන්නයි. මෙය ඉහළට ඔසවා තැබුවේ කවුදැයි අදහසක් නැත.
ස්ටෙෆාන් රීච්

11

ඔබට ගමනාන්ත ගොනු අන්තර්ගතය කියවීමට පමණක් කළ හැකි නම්:

find . -type f -exec chmod a-w '{}' \;

ධාවනය කිරීමට පෙර scp(එය පැමිණිලි කර පවතින ගොනු මඟ හරිනු ඇත).

පසුව ඒවා නැවත වෙනස් කරන්න ( chmod +wඋමාස්ක් පදනම් කරගත් අගය ලබා ගැනීමට). ඔබගේ උමාස්ක් අනුව ලිපිගොනු සියල්ලටම ලිඛිත අවසරයක් නොමැති නම්, ඔබට කෙසේ හෝ අවසර නැවත ගබඩා කිරීමට සිදුවනු ඇත, එවිට ඔබට ඒවා යථා තත්වයට පත් කළ හැකිය.

(ගිලෙස්ගේ පිළිතුර දැනට පවතින ලිපිගොනු දේශීයව අලුත් නම් ඒවා නැවත ලියයි, මට ඒ ආකාරයෙන් වටිනා දත්ත අහිමි විය. එම වැරදි හා හානිකර පිළිතුරට මෙතරම් ඉහළ ඡන්ද ප්‍රමාණයක් ඇත්තේ මන්දැයි තේරෙන්නේ නැත).


2
මට එය තේරුණේ නැත: rsync --ignore-existingඔබට දත්ත අහිමි වීමට හේතු වූයේ කෙසේද?
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

4
find: missing argument to '-exec'මෙම විධානය භාවිතා කිරීමෙන් මට දෝෂයක් ඇති වූ අතර ඒ වෙනුවට භාවිතා කිරීමට සිදුවිය : find . -type f -exec chmod a-w {} \;. මගේ ලිනක්ස් නරකයි, ymmv.
wpearse

මෙය වඩා හොඳ සහ ආරක්ෂිත පිළිතුරකි. අවසරය වෙනස් කිරීම සඳහා නිවැරදි විධානය pwpearse සඳහන් කළ පරිදි වේ:find . -type f -exec chmod a-w {} \;
අමීර්

7

ලිපිගොනු පොකුරක් පිටපත් කිරීමට, ඒවා තාර දැමීම වේගවත් ය. -K භාවිතා කිරීමෙන් ඉලක්කගත පද්ධතියට ලිපිගොනු ඉවත් කිරීමේදී තාර නැවත ලිවීම වළක්වයි.

tar -c <source-dir> | ssh <name>@<host> 'tar -kxzf - -C <target-dir>' 

1
එය දුරස්ථ සම්බන්ධතාවයක් ඇති කරයි. පළමුව එය තාර ප්‍රභවය වන අතර එය ssh සම්බන්ධතාවයට නල මාර්ගයෙන් දුරස්ථ පද්ධතියට මුදා හරිනු ඇත.
huembi

6

මම සමාන වන, මගේ නඩුව, මම භාවිතා කල නො හැකි බව rsync, csyncමගේ ගබඩා පමණක් සේයාරූ ඇති බැවින්, හෝ ගැටෙයි. rsyncගොනුව සඳහා දිනය සහ වේලාව වෙනස් කිරීමට නොහැකි විය, තවත් සමහර උපයෝගිතා (වැනි csync) මට වෙනත් දෝෂ පෙන්වීය: " තාවකාලික ගොනුවක් සෑදිය නොහැක ඔරලෝසු ඇලවීම අනාවරණය විය ".

ඔබට ගබඩා සේවාදායකයට ප්‍රවේශය ඇත්නම් - මෙහි ඩීමන් ලෙස ස්ථාපනය කරන්න openssh-serverහෝ දියත් rsyncකරන්න.

මගේ නඩුවේදී - මට මෙය කළ නොහැකි වූ අතර විසඳුම වූයේ: lftp . lftpසමමුහුර්තකරණය සඳහා භාවිතා කිරීම පහතින්:

lftp -c "open -u login,password sftp://sft.domain.tld/; \
    mirror -c --verbose=9 -e -R -L /srs/folder /rem/folder"

/src/folder- මගේ පරිගණකයේ ඇති ෆෝල්ඩරයද, /rem/folder- වේ sftp://sft.domain.tld/rem/folder.

Http://lftp.yar.ru/lftp-man.html යන සබැඳියෙන් ඔබට මෑන් පිටු සොයාගත හැකිය


-1

මෙය සාක්ෂාත් කරගත හැකි තවත් ක්‍රමයක් lsනම් ගමනාන්ත ෆෝල්ඩරය මත ක්‍රියා කිරීමයි:

දුරස්ථ ගමනාන්ත ෆෝල්ඩරයේ:

ls | awk '{print "mv " $1 " ../copied_data/"}' > mv_copied_data
scp mv_copied_data user@source.server.com:/path/to/source/folder

මූලාශ්‍රය මත:

cd /path/to/source/folder
chmod 777 mv_copied_data
./mv_copied_data

ගමනාන්තය මත:

scp -r user@source.server.com:/path/to/source/folder /path/to/destination/foldeer

කරුණාකර මෙය නොකරන්න. 1. විග්‍රහ නොකරන්න . 2. ඕනෑම ගොනු - >නාමයක අවකාශයේ නව රේඛාවක් හෝ වෙනත් විශේෂ අක්ෂර තිබේ නම් පිළිතුර භයානක ය . 3. පයිතන් ස්ක්‍රිප්ට් එකක ලූප් සඳහා දෘඩ කේතය. ධාවන වේලාවේදී වැඩසටහනක් උත්පාදනය කිරීම දුෂ්කර හා උපක්‍රමශීලී ය (වෘත්තීය ක්‍රමලේඛකයින් විසින් සිදු කරන විට පවා), බොහෝ හේතු නිසා. ෂෙල් පිටපතක් ජනනය කිරීම ඊටත් වඩා භයානක ය - භයානක අදහසකි.
ignis

-2

scpලිපිගොනු නැවත ලිවීම සිදු කරන අතර එය නතර කිරීම සඳහා කිසිදු ස්විචයක් නොමැත, නමුත් ඔබට දේවල් පිටපත් කර ගත හැකිය, scp කර ඉන්පසු පවතින ගොනු නැවත පිටපත් කළ හැකිය. උදාහරණ:

  1. පවතින සියලුම ලිපිගොනු පිටපත් කරන්න

    mkdir original_files ; cp -r * original_files/
    
  2. Scp භාවිතයෙන් සියල්ල පිටපත් කරන්න

    scp -r user@server:dir/* ./
    
  3. Scp විසින් ලියා ඇති ඕනෑම දෙයකට මුල් ගොනු පිටපත් කරන්න:

    cp -r original_files/* ./
    

4
ඔබ දුරස්ථ ස්ථානයකින් ලිපිගොනු ඇදගෙන ඔබ නතර කළ ස්ථානය තෝරා ගැනීමට උත්සාහ කරන විට මෙම ක්‍රමය උදව් නොකරයි. එනම්, සම්පූර්ණ අරමුණ කාලය ඉතිරි කර ගැනීම නම්.
ඔලිවර් විලියම්ස්
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.