mv: නාමාවලිය හිස් නොවේ


176

එකම ෆෝල්ඩර සහිත වෙනත් නාමාවලියක් තුළ ඩිරෙක්ටරියේ අන්තර්ගතය ගෙනයාමට මට අවශ්‍යය.

මෙන්න උදාහරණයක්:

මම ඇත ./backupwich යන බහලුම් ඇති baseහා test. දැන් මට මෙම නාමාවලි ඇතුළට ගෙන යාමට අවශ්‍යයි ./backupArchives.

මම මෙය භාවිතා කරමි:

mv ./backup/* ./backupArchives

නමුත් මට දෝෂයක් ඇතිවිය

mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty

මම භාවිතා කිරීමට උත්සාහ කළ --forceනමුත් වාසනාවක් නැත. ෆෝල්ඩර දැනටමත් පවතින විට එය ගෙනයාමට ක්‍රමයක් තිබේද?

සටහන: මට අවශ්‍ය වන්නේ අන්තර්ගතය ඒකාබද්ධ කිරීමට ය, නැවත ලිවීමක් නොමැත.


ඔබ හුදෙක් ෆෝල්ඩර වල අන්තර්ගතය ගමනාන්තයට ඒකාබද්ධ කිරීමට උත්සාහ කරනවාද, නැතහොත් ගමනාන්තයේ ඇති දේ නැවත ලිවීමට උත්සාහ කරනවාද? (දත්ත කප්පාදු කිරීම සඳහා ...... භාවිතා නොකර ඔබට සම්පූර්ණ දෝෂයක් තිබේ නම් එයද උපකාරී වේ)
තෝමස් වෝඩ්

මට අවශ්‍ය වන්නේ අන්තර්ගතය ඒකාබද්ධ කිරීමටය, නැවත ලිවීමක් නොමැත.
උදක්

2
DUdK මෙය ක්‍රියාත්මක වුවද, මෙය නාමාවලි දෙකේ අන්තර්ගතය ඒකාබද්ධ නොකරන බව සලකන්න . නාමාවලියක් ගෙනයාම එහි ඉලක්කය ප්‍රතිස්ථාපනය කරයි. rsyncඒ වෙනුවට බලන්න , එය ඒකාබද්ධ කිරීම සිදු කරයි.
zwets

Answers:


214

එහි මෑන් පිටුව එය ලේඛනගත නොකළද mv, ඉලක්කගත නාමාවලියෙහි ලිපිගොනු තිබේ නම් ඩිරෙක්ටරියක් වෙනත් නාමාවලියකට නම් කිරීම ප්‍රතික්ෂේප කරනු ඇත. ඔබේ නඩුවේ මෙය හොඳ දෙයක් වන්නේ ප්‍රභවයේ අන්තර්ගතය ඉලක්කයට ඒකාබද්ධ කිරීමට ඔබට අවශ්‍ය නිසා එය mvසිදු නොවන බැවිනි.

rsync -a backup/ backupArchives/ඒ වෙනුවට භාවිතා කරන්න . ඊට පස්සේ rm -rf backup/*.

භාවිතා කරනවා වෙනුවට rsyncඔබට සම්භාව්‍ය දේද කළ හැකිය

(cd backup && tar c .) | (cd backupArchives && tar xf -)

එමඟින් ඔබට වැඩි භූමි ලකුණු උපයා ගත හැකිය.


5
දැන ගැනීමට හොඳ දේවල්! දෙදෙනාම විශිෂ්ට ලෙස වැඩ කරති. ස්තූතියි!
උඩ්කේ

7
ගීක් ලකුණු හොඳම ලකුණු වේ: ඩී
මැඩ්මයික්

2
මේ සඳහා ඔබට අවශ්‍ය වන්නේ නිදහස් අවකාශයේ ඇති ෆෝල්ඩරයේ ප්‍රමාණයයි. එසේ නොවුවහොත් භයානක ගැටළු ඇති කරයි.
Pogrindis

4
Og පොග්‍රින්ඩිස් කරුණාකර සිදුවන්නේ කුමන භයානක ගැටලු සහ ඒවා සම්පූර්ණ තැටියකට ලිවීමට ගන්නා වෙනත් උත්සාහයන්ට වඩා වෙනස් වන්නේ කෙසේද? ඇත්ත වශයෙන්ම, මෙහෙයුම් දෙකම මුල් නාමාවලිය නොවෙනස්ව තබා ඇති හෙයින්, rm -rf backupArchivesප්‍රතිවිපාක නොමැතිව මෙහෙයුම අසමත් වුවහොත් , 'භයානක' ඒවා පමණක් නොව.
zwets

4
සම්භාව්‍ය ප්‍රවේශය නම් කිරීම ගැන ස්තූතියි, rsync නොමැති නම් ඉතා ප්‍රයෝජනවත් වේ! sudo sh -c '(cd backup && tar c .) | (cd backupArchives && tar xf -)'
සුඩෝ

45

ඉක්මන් හා අපිරිසිදු, ඔබ කරන්නේ කුමක්දැයි ඔබ දන්නේ නම්:

cp -r ./backup/* ./backupArchives && rm -R ./backup/*

3
මගේ ආරක්‍ෂිත මාදිලියේ ද ක්‍රියා කරයි.
තහනම්_ පරිශීලක

7

ඔබ ගමන් කරන නාමාවලියෙන් පසු ඔබට අවශ්‍ය *(ඕනෑම පෙළක් හෝ අංකයක් නියෝජනය කරයි). උදාහරණයක් වශයෙන්:

mv /var/www/* /recovery/wwwrecovery/

ඔබ ගොනු චලනය කරන්නේ නම්, ඒ සියල්ලටම වඩා:

mv /var/www/index.php /recovery/index.php

තවත් ක්‍රමයක් නම් තාර භාවිතා කරමින් එම ෆෝල්ඩරයේ අන්තර්ගතය ඇසුරුම් කිරීමයි:

tar -cvzpf backup.tar.gz /var/www 

ඉන්පසු වෙනත් ගොනුවක් බොරු කරන්න. තාර එය සම්පීඩනය කර ප්‍රමාණයෙන් කුඩා වන නිසා මම මෙම පියවර නිර්දේශ කරමි.

වෙනත් ෆෝල්ඩරයකට ගොනු උකහා ගැනීම සඳහා

tar -xvzpf /var/www/

ඔබට අයිති නැති ස්ථානයකට පිටපත් කිරීමට ඔබට අවශ්‍ය නම්, ඔබ sudoකුමන විකල්පයක් භාවිතා කිරීමට තීරණය කළත් විධානය සමඟ ඔබේ විධානය සකස් කිරීමට වග බලා ගන්න .

sudo tar -cvzpf backup.tar.gz /var/www/

මම උබුන්ටු 12.10 භාවිතා කරන අතර මට ලැබුනේ: mv: අවලංගු විකල්පය - 'R' වැඩි විස්තර සඳහා `mv --help 'උත්සාහ කරන්න. ඇත්ත වශයෙන්ම .tar හොඳයි, නමුත් මෙම තත්වය සඳහා මගේ ලිපිගොනු ගෙන යන්නේ කෙසේදැයි දැන ගැනීමට මට අවශ්‍යයි. ඔබගේ උදව්වට ස්තූතියි
උදක්

මම 12.04 ඩෙස්ක්ටොප් සහ සේවාදායකය භාවිතා කරන අතර දෙකෙහිම හොඳින් ක්‍රියා කරයි. ඔබ ෆොල්ෆර් සහ -ආර් අතර ඉඩක් නොතිබුනේ නම් ප්‍රවේශම් වන්න. මමත් -R රහිතව උත්සාහ කළේ මට ඒ ආකාරයටමයි, -R නොමැතිව උත්සාහ කරන්න, නමුත් අක්ෂර වින්‍යාසය සමඟ ප්‍රවේශම් වන්න: ලිනක්ස් වැදගත් වන්නේ පහළ සහ ලොකු අකුරු !!! මාර්ගය නොගැලපෙන චලනයකින් හෝ ස්ථානයෙන් චලනය වනවාට වඩා. ඔබට එම ෆෝල්ඩරය නොමැති නම් ඔබට එය පසු -C දැමීමට අවශ්‍ය නම් එය එය නිර්මාණය කරයි. පළමුව උත්සාහ කරන්න: ඔබේ ෆෝල්ඩරයේ -iname නම සොයාගෙන මූලයෙන් මෙම විධානය ක්‍රියාත්මක කරන්න , ඔබට යමක් අක්ෂර වින්‍යාසය මග හැරුනේ නම් එය වෙනත් ස්ථානයක තිබේදැයි බැලීමට. ඔබ භාවිතා කළ නිශ්චිත විධානය මට දෙන්න
ඩිමිට්‍රිස් තියඩෝරිඩිස්

what thaaa ..... එම ගොනු නාමය betwen හි තබන්න **
Dimitris Theodoridis

2
එය -Rනිසැකවම පළමු තර්කයෙන් පසුව නොපැමිණිය යුතුය. විකල්ප (ආසන්න වශයෙන්) සෑම විටම විධාන තර්ක වලට පෙර. එසේම, විකල්පයක් mvනොමැති අතර -R, අවසාන වශයෙන්, පුනරාවර්තනය a ට අදාළ නොවේ mv. ImDimitrisTheodoridis කරුණාකර ඔබේ පිළිතුර පළමුව පරීක්ෂා කරන්න.
zwets

1
ඔව් මගේ සහෝදරයා ඔබ හරි, මට සෑම විටම මගේ අක්ෂර වින්‍යාසය සමඟ ගැටලු ඇති අතර, සෑම විටම මට ඒ සඳහා ටර්මිනලය සමඟ ගැටළුවක් හෝ විධානයක් හමු නොවීම හෝ මා නොදන්නා නව ලිපිගොනු සහ නාමාවලි නිර්මාණය කිරීම, මූලික අක්ෂර වින්‍යාසය සඳහා පමණි ... මාර්ගය වන විට cp විධානය භාවිතා කර ඇත, මෙහි දී එම සහෝදරයා සඳහා mv sory ලියා ඇත: D
Dimitris Theodoridis

4

ෂුවර් rsyncවැඩ කරයි, නමුත් මෙය සහාය නොදක්වන යන්ත්‍ර සඳහාද ක්‍රියා කරයි rsync(එනම් පෙරනිමියෙන් rsync ස්ථාපනය කර නොමැති cpanel වලින්).

භාවිතා කිරීම ගැන කුමක් කිව හැකිද:

cd /path/to/backup/ && cp -R --parents ./* ../backupArchives

backupඅවශ්‍ය නම් නාමාවලිය ඉවත් කරන්න

Note1: ඔබ කිරීමට අවශ්ය cdකිරීමට backupඇති බලතල පෙර බහලුමcp -R --parents ...

සටහන 2: backupArchivesඔබට උපස්ථයෙන් නව ලිපිගොනු ලැබී ඇත්දැයි දෙවරක් පරීක්ෂා කරන්න .


1

ප්‍රශ්නය ඇසීමට පෙර, අපි සරල නඩුවක් සලකා බලමු.

අපි ෆෝල්ඩර දෙකක් තුළ / home / පරිපාලක සිතන්න fooහා barඑම උප බහලුම ව්යුහය ඇති, නමුත්, එක් එක් එය විවිධ ගොනු අඩංගු වේ. දැන් අපට අවශ්‍ය වන්නේ ඒවා එකකට ඒකාබද්ධ කිරීමයි. අපි වැනි දේවල් කරන mv foo/* barවිට දෝෂය mv: directory not emptyඇතිවේ.

මගේ විසඳුම වන්නේ විධාන රේඛා මෙවලම් අතහැර GUI ගොනු කළමනාකරුවෙකු වෙත මාරු වීමයි, උදාහරණයක් ලෙස ඩොල්ෆින්. ඔබ නැවත නම් කරන්න විට fooකිරීමට barඩොල්ෆින් දී, එය ඔබ එම විකල්පය ලිවූ ගමනාන්තය ෆෝල්ඩරයේ ලබා දෙන අතර ඔබට අනොන්ය දැනට පවතින ගොනු උඩින් ලියන්න යන්න ඉල්ලයි. මෙය පිටපත් කිරීම සහ මකා දැමීම වළක්වයි, එමඟින් එක් කේත පේළියක් නොමැතිව ඔබේ කාලය ඉතිරි වේ.

PS: මම එහි සිටින සෑම ගොනු කළමනාකරුවෙකුම පරීක්ෂා කළේ නැහැ. නමුත් ඔවුන්ගෙන් බොහෝ දෙනෙකුට මෙම ලක්ෂණය තිබිය යුතුය.

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.