සංකේතාත්මක සබැඳි පිටපත් කරන්නේ කෙසේද?


190

සංකේතාත්මක සබැඳි කිහිපයක් අඩංගු නාමාවලිය මා සතුව ඇත:

user@host:include$ find .. -type l -ls
4737414    0 lrwxrwxrwx   1 user group       13 Dec  9 13:47 ../k0607-lsi6/camac -> ../../include
4737415    0 lrwxrwxrwx   1 user group       14 Dec  9 13:49 ../k0607-lsi6/linux -> ../../../linux
4737417    0 lrwxrwxrwx   1 user group       12 Dec  9 13:57 ../k0607-lsi6/dfc -> ../../../dfc
4737419    0 lrwxrwxrwx   1 user group       17 Dec  9 13:57 ../k0607-lsi6/dfcommon -> ../../../dfcommon
4737420    0 lrwxrwxrwx   1 user group       19 Dec  9 13:57 ../k0607-lsi6/dfcommonxx -> ../../../dfcommonxx
4737421    0 lrwxrwxrwx   1 user group       17 Dec  9 13:57 ../k0607-lsi6/dfcompat -> ../../../dfcompat

මට ඒවා වත්මන් නාමාවලියට පිටපත් කිරීමට අවශ්‍යයි. එහි ප්‍රති ing ලයක් ලෙස ඇති සම්බන්ධතා ඒවායේ මූලාකෘති වලින් ස්වාධීන විය යුතු අතර ඒවායේ ඉලක්කගත වස්තූන් වෙත කෙලින්ම යොමු විය යුතුය.

  • cp -s සුදුසු හැසිරීම් නොවන සබැඳි වෙත සබැඳි නිර්මාණය කරයි.
  • cp -s -L නාමාවලි වලට සබැඳි පිටපත් කිරීම ප්‍රතික්ෂේප කරයි
  • cp -s -L -r වැඩ නොකරන නාමාවලියට සාපේක්ෂ සබැඳි පිටපත් කිරීම ප්‍රතික්ෂේප කරයි

මම කළ යුත්තේ කුමක් ද?


10
cp -dමගේ පැත්තෙන් වැඩේ කළා.
m-ric

2
cp -Rමැක් මත
මිර්කෝ

Answers:


213
cp --preserve=links

මෑන් පිටුවෙන්:

   --preserve[=ATTR_LIST]
          preserve  the   specified   attributes   (default:   mode,owner-
          ship,timestamps),  if  possible  additional attributes: context,
          links, xattr, all

පුද්ගලිකව, මම cp -av මගේ අධික පිටපත් කිරීම සඳහා භාවිතා කරමි. ඒ ආකාරයෙන්, මට සෑම දෙයක්ම සංරක්ෂණය කළ හැකිය - පුනරාවර්තනයෙන් පවා - සහ ප්‍රතිදානය බලන්න. ඇත්ත වශයෙන්ම, එය පුද්ගලික මනාපය පමණි.

ඔබගේ වෙනත් විකල්පයන් ඔබ අපේක්ෂා කළ දේ නොකළේ මන්ද , පිටපත් කිරීම වෙනුවට-s සබැඳියක් සාදා මූලාශ්‍රයේ ඇති සබැඳි අනුගමනය කරමින් ලිපිගොනු පිටපත් කිරීම වෙනුවට පිටපත් කිරීම සඳහා ගොනුව සොයා ගනී.-L


3
ඔබට එකතු කිරීමට අවශ්‍ය විය හැකිය -R, එසේ නොමැතිනම් cp ඩිරෙක්ටරි සහ සිම්ලින්ක් ඩිරෙක්ටරි වලට මඟ හැරෙනු ඇත.
ඔලිවියර් 'ඇල්බාම්' ෂර්ලර්

8
මම මෙය
රෙඩ්හැට්

44
මැක් එකකද? භාවිතයcp -a
ස්ටීව් ටෝබර්

12
-aවිකල්පය සඳහා +1 . හෙහ්, මම cpගණන් කළ නොහැකි වාර ගණනක් විකල්පයන් සොයා බැලුවෙමි, නමුත් මම සෑම විටම මෙය මඟ හැරිය යුතුය. මම මේ වන විට භාවිතා කර ඇත -dpr, නමුත් ඒ -aසියල්ල ආවරණය කරයි, තවත් ගුණාංග කිහිපයක් සංරක්ෂණය කරමි. මට මෙම වෙනත් ගුණාංග අවශ්‍ය වූයේ නම්, මම --preserveනැවත වරක් විකල්පය සොයා බලා භාවිතා කරනු ඇත -dr --preserve=all, එය හරියටම එයයි -a! හොඳයි, අවම වශයෙන් මම දැන් දනිමි - -aපරිපූර්ණයි, මම මෙතැන් සිට භාවිතා කරන්නේ මෙයයි.
ජේම්ස් හේග්

3
මෙය සිග්වින් මත ක්‍රියාත්මක වූයේ නැත. --preserve=linksප්‍රමාණවත් නොවීය. එය තවමත් පවසා cp: omitting directoryඇත. නමුත් -avවැඩ කළා.
ක්ලෝයි

49

මෑන් පිටුව පවසන ආකාරයටම භාවිතා කරන්න -P.


9
මැක් -Pමත ඩිරෙක්ටරි මත ක්‍රියා නොකරයි, එබැවින් මම භාවිතා කළෙමිcp -a
ස්ටීව් ටෝබර්

4
ස්තූතියි, මම ඔබේ පිළිතුරෙන් 3 වතාවක් දැක ඇත්තෙමි. එය මතක ඇති බවක් නොපෙනේ!
සිද්ධාර්ථ

මෙය ක්‍රියාත්මක වේ, නමුත් මගේ මෑන් පිටුව පවසන්නේ "-P කිසි විටෙකත් SOURCE හි සංකේතාත්මක සබැඳි අනුගමනය නොකරන්න", එය "ගමනාන්තයට සිම්ලින්ක් ලෙස සිම්ලින් පිටපත් කරන්න" හා සමානවම සමාන නොවේ. ("කිසි විටෙකත් අනුගමනය නොකරන්න" එය -R සමඟ ඒකාබද්ධව ක්‍රියා කරන බවක් පෙනේ)
ආර්එම්

මෙය cp -Pain කයිනොස්නස්ගේ ඉහළම ඡන්දය දුන් පිළිතුර මෙන් නොව මා වෙනුවෙන් වැඩ කරයි. ස්තූතියි!
tommy.carstensen

Redhat මත වැඩ කරයි. පිළිගත් ප්‍රතිචාරය ක්‍රියාත්මක නොවේ!
ෆයිබර්

30

සබැඳිවල සාපේක්ෂ මාර්ග තිබේ නම්, සබැඳිය පිටපත් කිරීමෙන් සාපේක්ෂ මාර්ගය වෙනස් නොවේ. සබැඳියේ නිරපේක්ෂ මාර්ගය ලබා ගැනීම සඳහා, පුනරාවර්තව අනුගමනය කිරීමට readlinkස්විචය සමඟ භාවිතා කරන්න -f. උදාහරණයක් වශයෙන්:

ln -s $(readlink -f old/dir/oldlink) new/dir/newlink

සාපේක්ෂ මාර්ග ආරක්ෂා ඔබට අවශ්ය දේ නම්, එම විකල්පය වඩා -Pවන cpIgnacio Vazquez-ඒබ්රහම් විසින් පැවසූ පරිදි, ඔබට අවශ්ය දේ වේ.


1
ඔබ කිරීමට උත්සාහ කරන්නේ සමමුහුර්ත නිරපේක්ෂයට සාපේක්ෂව පරිවර්තනය කිරීම නම්, පුනරාවර්තන ලෙස විරූපණය කිරීම නරක අදහසක් විය හැකිය. මෙහි පුනරාවර්තනය අවශ්‍ය නොවන අතර සමහර විට දම්වැල් සහිත සිම්ලින්ක් හේතුවක් ඇත. තේරීම් හෝ වින්‍යාස විකල්පයන් නියම කිරීමට සිම්ලින්ක් බොහෝ විට භාවිතා කරයි. උදාහරණයක් ලෙස, මගේ පද්ධතියේ /usr/share/dict/words -> /etc/dictionaries-common/words -> /usr/share/dict/british-englishකැමති ශබ්දකෝෂයක් සඳහන් කරන සිම්ලින්ක් දාමයක් ඇත. ඔබ මෙම දාමය පුනරාවර්තනය කරන්නේ නම්, එහි ප්‍රති sy ලයක් ලෙස ඇති වන සිම්ලින්ක් මඟින් මෙම මනාපයේ අනාගත වෙනස්කම් නොසලකා හරිනු ඇත.
ජේම්ස් හේග්

24

කිහිප දෙනෙක් අදහස් දක්වා ඇති පරිදි:

cp -a 

හොඳින් ක්රියා කරයි.

මිනිසාගෙන්:

-a    same as -dR --preserve=all

-R    copy directories recursively
-d    same as --no-dereference --preserve=links
--no-dereference   never follow symbolic links in SOURCE

3
... නමුත් සමමුහුර්ත කිසිවක් සාපේක්ෂ මාර්ගවලට සම්බන්ධ නොවන්නේ නම් පමණි.
මයිකල් ෂෙපර්

11

බොහෝ විට, මට බොහෝ සංකේතාත්මක සබැඳි පිටපත් කිරීමට අවශ්‍ය වූ විට, මම ඇත්ත වශයෙන්ම ඩිරෙක්ටරි ගසක් පිළිබිඹු කිරීමට උත්සාහ කරමි. ඒ නිසා මට සිම්ලින්ක්ස් සහ අනෙක් සියල්ල අවශ්‍යයි.

සිම්ලින්ක් කිහිපයක් පිටපත් කිරීම සඳහා මෙය අතිරික්තයකි, නමුත් ඔබ ඇත්ත වශයෙන්ම සම්පූර්ණ ගසක් පිටපත් කිරීමට උත්සාහ කරන්නේ නම්, මෙය ඉතා ප්‍රයෝජනවත් වේ:

තාර භාවිතා කරන්න .

user@host:/cwd$ ( cd /path/to/src ; tar cf - . ) | ( cd /path/to/dest ; tar xf - )

තාර මඟින් පෙරනිමියෙන් සිම්ලින්ක් නිරාකරණය නොකරයි, එබැවින් දර්පණ පිටුවේ ඇති සිම්ලින්ක්ස් මුල් ගසෙහි ඇති ස්ථාන වලටම යොමු වේ.

මෙම උපක්‍රමය මඟින් දර්පණ මූලයේ දර්පණය කළ යුතු තාර විධානය ස්ථානගත කිරීම සඳහා උප ෂෙල් භාවිතා කරයි; ඔබ දැනටමත් src හෝ dest බහලුම් වල සිටී නම් ඔබට ඒවායින් එකක් (සම්බන්ධිත cd විධානය සමඟ) තැබිය හැකිය :

# already in src?
user@host:/src$ tar cf - . | ( cd /path/to/dest ; tar xf - )

# already in dest?
user@host:/dest$ ( cd /path/to/src ; tar cf - . ) | tar xf - 

# just need src/foo?
# this result will be a mirror copy at dest/foo 
user@host:/src$ tar cf - foo | ( cd /path/to/dest ; tar xf - )

# mirror to another system?
user@host:/src$ tar cf - . | ssh user@example.com '( cd /path/to/dest ; tar xf - )'

නැවතත්, ඔබට සංකේතාත්මක සබැඳි පිටපත් කිරීමට අවශ්‍ය සෑම අවස්ථාවකම මෙය සුදුසු නොවේ, නමුත් එය දැන ගැනීමට ඉතා ප්‍රයෝජනවත් ස්නිපටයක් වේ.


1
තාර අනිවාර්යයෙන්ම මගේ අත්දැකීම් අනුව සීපී වලට වඩා අතේ ගෙන යා හැකි ය
දීප්තිමත්

11

සැබවින්ම විශාල නාමාවලියක් අනුපිටපත් කිරීමට මම පහත සඳහන් දෑ භාවිතා කළෙමි. සියලුම සංකේතාත්මක සම්බන්ධතා සංරක්ෂණය කර ඇති අතර, පිටපත පුනරාවර්තන ලෙස සිදු කරන ලද අතර ක්‍රියාවලියේ දෘශ්‍ය ප්‍රතිපෝෂණ ලබා ගැනීමට මට හැකි විය:

cp -Prv /sourcer_dir/* /target_dir

4

උත්සාහ කරන්න: cp -pr symlink ගමනාන්තය

[root@station1 temp]# ls -l
total 8
-rw-r--r-- 1 root root  0 Jul 27 18:40 abc
lrwxrwxrwx 1 root root 13 Jul 27 18:41 abc.link1 -> /tmp/temp/abc
[root@station1 temp]# cp -rp /tmp/temp/abc.link1 /tmp/temp/abc.link2
[root@station1 temp]# ls -l
total 12
-rw-r--r-- 1 root root  0 Jul 27 18:40 abc
lrwxrwxrwx 1 root root 13 Jul 27 18:41 abc.link1 -> /tmp/temp/abc
lrwxrwxrwx 1 root root 13 Jul 27 18:42 abc.link2 -> /tmp/temp/abc
[root@station1 temp]# 

OS - Centos 5 (Linux)


3

නාමාවලියක සබැඳි සහ ගොනු පිටපත් කිරීමේදී උබුන්ටු හි:

cp --no-dereference --preserve=links

6
cp -dමේ සඳහා
කෙටිකතාවයි

1
මම හිතන්නේ දෙකම cp -aසහ cp --preserve=linksප්‍රශ්නය අසනවාට වඩා වැඩි යමක් කරන්න. මා තේරුම් ගත් පරිදි, භාවිතා කරන ඕනෑම කෙනෙකුට මෙය නිවැරදි පිළිතුර වේ cp, නමුත් ප්‍රශ්න සහිත ලිපිගොනු පමණක් (නාමාවලි නොමැත), --no-dereferenceකිසිදු බලපෑමක් ඇති නොකරනු ඇත.
palswim

2

ඉහත ලියා ඇති පරිදි-P ඉග්නේෂියෝ වාස්කේස්-ඒබ්‍රම්ස් විකල්පය භාවිතා කරන්න . ඔහු සඳහන් නොකළ දෙයින් කිසිදු බලපෑමක් නැත . එබැවින් ඔබට අවම වශයෙන් අවශ්ය වේ .-P-Rcp -RP

(වෙබ් අඩවිය මට තවම අදහස් දැක්වීමට ඉඩ නොදේ, එබැවින් මම වෙනම පිළිතුරක් පළ කළෙමි.)


පැරණි සූර්ය බල පෙට්ටියක මගේ සීපී -d සහාය නොදක්වයි. cp -rP මා වෙනුවෙන් වැඩ කළා; (-R සහ -r අතර වෙනස idk කරන්න, -r මට වැඩ කරයි).
spioter

1

cp -s සහ cp -L විශේෂ විධාන වේ. ඔබගේ අවශ්‍යතාවය සඳහා, කිසිවක් භාවිතා නොකරන්න.

උදා: a සහ සංකේතාත්මක සබැඳියක් අඩංගු DIR නාමාවලිය පිටපත් කිරීම a.

  • cp -s DIR / * N / පිටපත් කිරීම වෙනුවට සංකේතාත්මක සබැඳියක් නිර්මාණය කරයි, N / a -> ../ DIR / a (link) සහ N / b -> (../ DIR / b) එය සබැඳියකට සම්බන්ධ වේ
  • cp -L DIR / * N / පිටපත් සම්බන්ධක විරූපණය, N / a, N / b (DIR / a හා සමාන)

ඔබට අවශ්‍ය වන්නේ N / a (= DIR / a), සහ N / b -> ../ N / a; එබැවින් cp -P විකල්පය භාවිතා කරමින් විරූපණයකින් තොරව පිටපත් කරන්න. මෙය cp සඳහා පෙරනිමිය බව මම විශ්වාස කරමි.

  • -P අවලංගු කිරීම, සම්බන්ධතා ආරක්ෂා කිරීම
  • -d -P විකල්පය -p සමඟ සංරක්ෂණය කිරීමට = මාදිලිය, හිමිකාරිත්වය, කාලරාමු
  • -a ඩිරෙක්ටරි නැවත නැවත පිටපත් කිරීම සඳහා -d විකල්පය -R සමඟ ඒකාබද්ධ කරයි

යොමු කරන්න man cpහෝ cp --helpතවත් විකල්ප සඳහා.

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.