cp umyalo: kopisha amafolda efayela ngendlela efanele ku-*nix

cp umyalo: kopisha amafolda efayela ngendlela efanele ku-*nix

Lesi sihloko sizoveza ezinye izinto ezingekho sobala ezihlobene nokusetshenziswa kwe ama-wildcards lapho ukopisha, ukuziphatha komyalo okungaqondakali cp lapho ukopisha, kanye nezindlela ezikuvumela ukuthi ukopishe kahle inani elikhulu lamafayela ngaphandle kokweqa noma ukuphahlazeka.

Ake sithi sidinga ukukopisha yonke into kusuka kufolda /umthombo kuya kufolda /okuqondisiwe.

Into yokuqala efika engqondweni:

cp /source/* /target

Masilungise ngokushesha lo myalo ku:

cp -a /source/* /target

Ukhiye -a izongeza ukukopishwa kwazo zonke izici, amalungelo futhi yengeze ukuphindaphinda. Uma ukukhiqizwa kabusha kwamalungelo kungadingeki, ukhiye wanele -r.

Ngemva kokukopisha, sizothola ukuthi akuwona wonke amafayela akopishiwe - amafayela aqala ngechashazi njenge:

.profile
.local
.mc

nokunye okunjalo.

Kungani lokhu kwenzeka?

Ngoba amakhadi asendle acutshungulwa yigobolondo (bash esimweni esijwayelekile). Ngokuzenzakalelayo, i-bash izowaziba wonke amafayela aqala ngamachashazi, njengoba iwaphatha njengafihliwe. Ukuze sigweme lokhu kuziphatha kuzofanele siguqule indlela yokuziphatha bash usebenzisa umyalo:

shopt -s dotglob

Ukuqinisekisa ukuthi lolu shintsho lokuziphatha luyaqhubeka ngemva kokuqalisa kabusha, ungakha ifayela le-wildcard.sh ngalo myalo kufolda. /etc/profile.d (Mhlawumbe ukusatshalaliswa kwakho kunefolda ehlukile).

Futhi uma kungekho amafayela kumkhombandlela womthombo, igobolondo ngeke likwazi ukufaka noma yini esikhundleni senkanyezi, futhi ukukopisha kuzophinde kuhluleke ngephutha. Kukhona ongakhetha kukho ngokumelene nalesi simo failglob ΠΈ nullglob. Kuzodingeka sibeke failglob, okuzovimbela ukuthi umyalo wenziwe. nullglob ngeke isebenze, njengoba iguqula intambo enamakhadi asendle angatholanga okufanayo ibe yiyunithi yezinhlamvu engenalutho (ubude obunguziro), okuthi cp izodala iphutha.

Kodwa-ke, uma kunezinkulungwane zamafayela noma ngaphezulu kufolda, indlela yamakhadi asendle kufanele iyekwe ngokuphelele. Iqiniso liwukuthi bash inweba ama-wildcards kumugqa womyalo omude kakhulu njengo:

cp -a /souce/a /source/b /source/c …… /target

Kunomkhawulo wobude bomugqa womyalo, esingawuthola sisebenzisa umyalo:

getconf ARG_MAX

Masithole ubude obukhulu bomugqa womyalo ngamabhayithi:

2097152

Noma:

xargs --show-limits

Sithola okuthile okufana nalokhu:

….
Maximum length of command we could actually use: 2089314
….

Ngakho-ke, masenze ngaphandle kwama-wildcards ngokuphelele.

Ake sibhale nje

cp -a /source /target

Futhi lapha sibhekene nokungaqondakali kokuziphatha cp. Uma ifolda ye-/target ingekho, khona-ke sizothola esikudingayo.

Nokho, uma ifolda eqondiwe ikhona, amafayela azokopishelwa kufolda ethi /target/source.

Asikwazi njalo ukusula ifolda /okuqondiwe kusenesikhathi, njengoba ingase ibe namafayela esiwadingayo futhi umgomo wethu, isibonelo, uwukwengeza amafayela ku/thagethi ngamafayela asuka ku/umthombo.

Uma umthombo nefolda okuyiwa kuyo ibizwe ngokufana, isibonelo, besikopisha kusuka /umthombo kuya /ekhaya/umthombo, singasebenzisa umyalo:

cp -a /source /home

Futhi ngemva kokukopisha, amafayela aku/home/source azokwengezwa ngamafayela asuka ku-/source.

Lena inkinga enengqondo: singakwazi ukwengeza amafayela ohlwini lwemibhalo uma amafolda ebizwa ngokufana, kodwa uma ehlukile, khona-ke ifolda yomthombo izofakwa ngaphakathi kwendawo okuyiwa kuyo. Ungawakopisha kanjani amafayela kusuka / emthonjeni kuya / okuqondiwe usebenzisa i-cp ngaphandle kwamakhadi asendle?

Ukuze sinqande lo mkhawulo oyingozi, sisebenzisa isixazululo esingabonakali:

cp -a /source/. /target

Labo abajwayele i-DOS ne-Linux sebevele baqonde yonke into: ngaphakathi kwefolda ngayinye kunamafolda ama-2 angabonakali "." kanye nokuthi β€œ..”, okungamafolda-mbumbulu axhuma kuzinkomba zamanje neziphakeme.

  • Uma ukopisha cp ihlola ubukhona bese izama ukwakha /target/.
  • Uhla lwemibhalo olunjalo lukhona futhi luyi/target
  • Amafayela asuka ku/umthombo akopishelwe kokuthi/okuqondiwe kahle.

Ngakho-ke, yifake ohlakeni olugqamile enkumbulweni yakho noma odongeni:

cp -a /source/. /target

Ukuziphatha kwalomyalo kucacile. Konke kuzosebenza ngaphandle kwamaphutha, kungakhathaliseki ukuthi unamafayela ayisigidi noma awunawo nhlobo.

okutholakele

Uma udinga ukukopisha konke amafayela kusuka kufolda eyodwa kuya kwenye, asisebenzisi ama-wildcards, kungcono ukuwasebenzisa esikhundleni salokho cp kuhlanganiswe nesikhathi ekupheleni kwefolda yomthombo. Lokhu kuzokopisha wonke amafayela, okuhlanganisa nalawo afihliwe, futhi ngeke kuhluleke ngezigidi zamafayela noma awekho nhlobo amafayela.

I-Afterword

vmspike uphakamise inguqulo yomyalo enomphumela ofanayo:

cp -a -T /source /target

Oz_Alex

cp -aT /source /target

QAPHELA: icala lencwadi T inencazelo. Uma uyixuba, uzothola udoti ophelele: indlela yokukopisha izoshintsha.
Siyabonga:

  • Izinkampani I-RUVDS.COM ukuze uthole ukusekelwa kanye nethuba lokushicilela kubhulogi yakho ku-HabrΓ©.
  • Ngesithombe ngasinye Umqondo Kathathu. Isithombe sikhulu kakhulu futhi sinemininingwane, singavulwa efasiteleni elihlukile.

PS Sicela uthumele noma yimaphi amaphutha owabona kumlayezo oyimfihlo. Ngengeza i-karma yami kulokhu.

cp umyalo: kopisha amafolda efayela ngendlela efanele ku-*nix

Source: www.habr.com

Engeza amazwana