'තාර' විධානය භාවිතා කර වෙනත් නාමාවලියකට ගොනු උකහා ගන්නේ කෙසේද?


713

මම හිතුවා tar archive.tar /users/mylocationවැඩ කරයි කියලා, නමුත් ඒක නැහැ. මට එය කළ හැක්කේ කෙසේද?


1
එසේම, -C, --directory DIR\n change to directory DIRඒ වෙනුවට විස්තර කළ යුතුය change output directory to DIR (will fail if DIR doesn't exist). ස්තූතියි ch මිච්. @ බ්‍රයන්_ලාර්සන්ගේ පිළිතුරද බලන්න.
වලංගු

1
J උජ්වාල් සිං: ඇත්ත වශයෙන්ම තාර මිනිසාගේ පිටුව එතරම් ප්‍රයෝජනවත් නොවේ. එය "-C DIR" "ඩිරෙක්ටරියට වෙනස් කිරීම" ලෙස විස්තර කරයි. ඊටත් වඩා භයානක ය: "tar -C mydir xf archive.tar" ක්‍රියා නොකරන අතර "tar xf archive.tar -C mydir" ක්‍රියා කරයි.
පැට් මොරින්

At පැට්මොරින් සාධාරණ ලෙස කිවහොත්, ඔබ භාවිතා කරන තර්ක කැඳවීමේ සම්මුතීන් තේරුම් ගත් පසු එය අර්ථවත් කරයි. ඔබ ද කළ හැකි tar xfC archive.tar mydirහෝ tar -C mydir -xf archive.tar. එය සාම්ප්‍රදායික විලාසිතාවන් සහ ග්නූ විලාසිතාවේ ධජ මිශ්‍ර කිරීම පමණක් වන අතර එය දේවල් බිඳ දමයි. සාම්ප්‍රදායික ධජ සියල්ලම පළමු තර්කය ලෙස එක මලක් ලෙස සම්මත වේ. ඔවුන් පළමුවැන්නා නොවේ නම් ඔවුන් වැඩ කරනු ඇතැයි අපේක්ෂා කළ නොහැක. (මම අදහස් කලේ, ඔව්, එය කළ හැකි එය කෙසේ හෝ අර්ථ නිරූපණය කිරීමට ය - මගේ අදහසට අනුව සම්මත ඉහලින් සහ නොව විය කැමතියි මිල)
අරමුදල මොනිකා ගේ නඩු හබවලට

Answers:


1013

ධාරාවට වඩා වෙනස් නාමාවලියකට ලේඛනාගාරයක් උපුටා ගැනීම සඳහා , මෙන් -C, හෝ --directory, තාර විකල්පය භාවිතා කරන්න

tar -xf archive.tar -C /target/directory

එම විධානය ක්‍රියාත්මක කිරීමට පෙර ඉලක්ක නාමාවලිය පැවතිය යුතු බව සලකන්න (එය නිර්මාණය කළ හැක්කේ mkdir /target/directory).

වෙනත් විකල්ප සඳහා අත්පොත පිටුව (විධානය :) කියවන්න man tar.


මාර්ගය ඉවත් කළ හැකිද: එනම් ගොනුව ලබා ගන්න
zzapper

3
එය විශාල ගොනුවක් නම්, ඔබ විධානය ක්‍රියාත්මක කරන විට, ඔබට ලැබෙන්නේ එය ක්‍රියාත්මක වන විට තත්පර කිහිපයක් හෝ මිනිත්තු ගණනක් ප්‍රතිදානය නොවේ. එක් එක් ගොනුව උපුටා ගන්නා විට එහි නම ලැයිස්තුගත කරන -vධජය ( වාචික මාදිලිය ) එකතු කිරීමෙන් ඔබට මෙය නිවැරදි කළ හැකිය .
IQAndreas


12
මේ වසර ගණනාවකට පසු, සියලු විකල්පයන් tarඑකතු වී තිබියදීත් , නිමැවුම් නාමාවලිය නොපවතී නම් එය නිර්මාණය කිරීමට තවමත් විකල්පයක් නොමැති වීම පුදුමයක් නොවේද ?
EM0

1
මම සම්පුර්ණයෙන්ම එකඟ වෙමි, ප්‍රතිදාන නාමාවලිය නොපවතී නම් එය නිර්මාණය කිරීමට විකල්පයක් තිබිය යුතුය . එසේ නොමැතිනම්, ඔබට ගොනුව උපුටා ගෙන භාවිතා කළ හැකිය mv.
මාරියස් හොෆර්ට්

270

ඔබේ ටාබෝල් තුළ ඔබට වෙනස් කිරීමට අවශ්‍ය නාමාවලි නාමයක් දැනටමත් තිබේ නම්, --strip-components=1විකල්පය එක් කරන්න :

tar xf archive.tar -C /target/directory --strip-components=1

2
ඔබට ස්තුතියි. Wget / etc හරහා බාගැනීම් සෑම විටම 'මාපිය' නාමාවලියක් ඇත. මෙය සම්පූර්ණ පිළිතුර imo - හෝ ඉහත පිළිතුරෙහි සටහන් කළ යුතුය.
bshea

මම සොයන දේ. --strip-componentsවිවිධ අනුවාදයන් භාවිතා කළ හැකි සැපයුම්කරුවන් ධාවනය කිරීමේදී එය ඉතා ප්‍රයෝජනවත් වේ. /target/directoryසැපයුම්කරු ඔවුන්ගේ සංරක්ෂිත ෆෝල්ඩරය නම් කිරීමට තෝරාගත්තේ කෙසේද යන්න ගැන කරදර නොවී මෙම ක්‍රමය සාමාන්‍ය නමක් විය හැකිය.
ජැක්_හු

හිස ඔසවා බැලීමෙන්, එක් එකක් පමණක් නොව, ප්‍රමුඛ පෙළේ නාමාවලි ගණනාවක් ඉවත් කළ හැකිය: --strip-components = NUMBER තීරුව නිස්සාරණය කිරීමේදී ගොනු නාම වලින් ප්‍රමුඛ පෙළේ සංරචක
aexl

32

පෙර පිළිතුරු සහ අදහස් ඒකාබද්ධ කිරීම:

අන්තර්ගතය උපුටා ගැනීම සහ ඉලක්ක නාමාවලිය නොමැති නම් එය නිර්මාණය කිරීම:

mkdir -p /target/directory && tar xf archive.tar -C /target/directory

සිප් එකේ ඇති මූල (පළමු මට්ටමේ) නාමාවලිය උපුටා ගැනීම සහ ඉවත් කිරීම

mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1

--one-top-level=/target/directoryතාර විධානයට විකල්පය එකතු කිරීමෙන් සහ විකල්පය ඉවත් කිරීමෙන් ඔබට නාමාවලිය නිර්මාණය කිරීම මඟ හැරිය -Cහැක. මෙම පිළිතුර
smac89

24

තවත් විකල්පයක් වන්නේ --one-top-level භාවිතා කිරීමයි. මෙය ස්වයංක්‍රීයව මුල් පිටුවේ ගොනු නාමය මත පදනම් වූ නාමාවලියක් නිර්මාණය කරයි.

tar zxvf filename.tgz --one-top-level

මීට අමතරව ඔබට අවශ්‍ය නම්, ඔබට ඔබේම දෑ සඳහන් කළ හැකි අතර තාර එය ස්වයංක්‍රීයව නිර්මාණය කරයි.

tar zxvf filename.tgz --one-top-level=new_directory

3
මම GNU tar 1.26 භාවිතා කරන අතර ඒ සඳහා මට හඳුනා නොගත් විකල්ප දෝෂයක් ඇත--one-top-level
Emma Strubell

මට අවශ්‍ය පිළිතුර මෙයයි. නාමාවලි නාමය සඳහන් කිරීමට "නැත" යන්න ඉතා ප්‍රයෝජනවත් වේ, නැතහොත් නම සඳහා ගොනුව වෙත නැවත යොමු වන විශේෂ කේත මතක තබා ගන්න. ඔබට ස්තුතියි.
කුහක

2

නිස්සාරණය සම්බන්ධයෙන් මා සිත් ගත් දෙය නම්, එය ඔබ ලේඛනාගාරය නිර්මාණය කළ ආකාරය මත රඳා පවතී, මෙම උදාහරණය බලන්න

cd /tmp
mkdir folder
touch folder/file.txt

ඔබ කරන tar -zcvf folder.tar.gz folderසෑම දෙයක්ම අපේක්ෂිත පරිදි වේ = ඔබ එය ඉවත් කළ විට දැන් එය නිරුපද්‍රිත වනු ඇත (ෆෝල්ඩරය සාදනු ඇත, ඔබ එය ඉවත් කළහොත්) ලෙස /tmp/folder/.

නමුත්, ඔබ තාර නිර්මාණය කර tar -zcvf tmp-folder.tar.gz /tmp/folderඑය / tmp ෆෝල්ඩරයෙන් ඉවත් කළ විට, ප්‍රති result ලය /tmp/tmp/folderනාමාවලිය වනු ඇත ! එවැනි අවස්ථාවකදී ඔබට එය / -tar -xf tmp-folder.tar.gz -C /


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.