ordú cp: fillteáin comhaid a chóipeáil i gceart i * nix

ordú cp: fillteáin comhaid a chóipeáil i gceart i * nix

Nochtfaidh an t-alt seo roinnt rudaí neamhshoiléir a bhaineann le húsáid na cártaí fiáine nuair a chóipeáil, iompar ordú débhríoch cp nuair a chóipeáil, chomh maith le modhanna a ligeann duit a chóipeáil i gceart ar líon mór de na comhaid gan gan bacadh le nó crashing.

Ligean le rá go gcaithfimid gach rud a chóipeáil ón bhfillteán / foinse go dtí an fillteán sprioc /.

Is é an chéad rud a thagann chun cuimhne:

cp /source/* /target

Ceartaimis an t-ordú seo láithreach chun:

cp -a /source/* /target

Eochair -a cuirfidh sé cóipeáil na dtréithe, na cearta go léir agus cuirfidh sé atarlú leis. Nuair nach gá atáirgeadh beacht ar chearta, is leor eochair -r.

Tar éis é a chóipeáil, feicfimid nár cóipeáladh gach comhad - comhaid a thosaíonn le ponc mar:

.profile
.local
.mc

agus a leithéid.

Cén fáth ar tharla sé seo?

Toisc go bpróiseálann an bhlaosc saoróga (bash i gcás tipiciúil). De réir réamhshocraithe, déanfaidh bash neamhaird ar gach comhad ag tosú le poncanna, toisc go ndéileálann sé leo mar rud i bhfolach. Chun an iompar seo a sheachaint beidh orainn iompar a athrú bash ag baint úsáide as an ordú:

shopt -s dotglob

Chun a chinntiú go leanann an t-athrú iompair seo ar aghaidh tar éis atosaigh, is féidir leat comhad wildcard.sh a chruthú leis an ordú seo san fhillteán /etc/profile.d (B'fhéidir go bhfuil fillteán difriúil ag do dháileadh).

Agus mura bhfuil aon chomhaid san eolaire foinse, ní bheidh an bhlaosc in ann aon rud a chur in ionad an réiltín, agus teipfidh an chóipeáil freisin le hearráid. Tá roghanna i gcoinne an staid seo failglob и nullglob. Beidh orainn a shocrú failglob, rud a chuirfidh cosc ​​​​ar an ordú a fhorghníomhú. nullglob ní oibreoidh sé, ós rud é go n-athraíonn sé téad le cártaí saoróga nár aimsigh meaits ina sreang folamh (fad nialasach), rud a cp cuirfidh sé faoi deara earráid.

Mar sin féin, má tá na mílte comhad nó níos mó san fhillteán, ba cheart an cur chuige saoróg a thréigean ar fad. Is é fírinne an scéil go bash leathnaíonn sé saoróga go líne ordaithe an-fhada mar:

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

Tá teorainn le fad na líne ordaithe, ar féidir linn a fháil amach leis an ordú:

getconf ARG_MAX

Faighimid uasfhad na líne ordaithe i mbearta:

2097152

Nó:

xargs --show-limits

Faighimid rud éigin mar:

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

Mar sin, déanaimis gan saoróga ar fad.

A ligean ar scríobh díreach

cp -a /source /target

Agus anseo táimid ag tabhairt aghaidhe ar athbhrí iompair cp. Mura bhfuil an fillteán / spriocfhillteán ann, gheobhaidh muid an méid a theastaíonn uainn.

Má tá an fillteán sprice ann, áfach, déanfar na comhaid a chóipeáil chuig an bhfillteán /target/source.

Ní féidir linn an fillteán/spriocfhillteán a scriosadh roimh ré i gcónaí, mar go bhféadfadh comhaid a theastaíonn uainn a bheith ann agus is é an sprioc atá againn, mar shampla, ná na comhaid i /sprioc a fhorlíonadh le comhaid ó / foinse.

Má ainmníodh na fillteáin foinse agus cinn scríbe mar an gcéanna, mar shampla, bhí muid ag cóipeáil ó / foinse go / home / foinse, ansin d'fhéadfaimis an t-ordú a úsáid:

cp -a /source /home

Agus tar éis iad a chóipeáil, chuirfí comhaid ó / foinse leis na comhaid in /home/source.

Is fadhb loighciúil é seo: is féidir linn comhaid a chur san eolaire cinn scríbe má tá na fillteáin ainmnithe mar an gcéanna, ach má tá siad difriúil, cuirfear an fillteán foinse laistigh den cheann scríbe. Conas comhaid a chóipeáil ó / foinse go / sprioc ag baint úsáide as cp gan saoróga?

Chun teacht timpeall ar an teorannú díobhálach seo, úsáidimid réiteach neamhshoiléir:

cp -a /source/. /target

Thuig na daoine a bhfuil cur amach acu ar DOS agus Linux gach rud cheana féin: taobh istigh de gach fillteán tá 2 fhillteán dofheicthe “.” agus “..”, ar naisc bhréige iad leis na heolairí reatha agus níos airde.

  • Nuair a chóipeáil cp seiceálann sé do bheith ann agus déanann sé iarracht /target/ a chruthú.
  • Tá eolaire den sórt sin ann agus is /sprioc é
  • Déantar comhaid ó / foinse a chóipeáil go /target i gceart.

Mar sin, croch é i bhfráma trom i do chuimhne nó ar an mballa:

cp -a /source/. /target

Tá iompar an ordaithe seo soiléir. Oibreoidh gach rud gan earráidí, is cuma an bhfuil milliún comhad agat nó nach bhfuil aon cheann ar bith agat.

Torthaí

Más gá duit a chóipeáil go léir comhaid ó fhillteán amháin go ceann eile, ní úsáidimid saoróga, is fearr iad a úsáid ina ionad cp in éineacht le tréimhse ag deireadh an fillteán foinse. Déanfaidh sé seo gach comhad a chóipeáil, lena n-áirítear cinn i bhfolach, agus ní theipeann leis na milliúin comhaid nó gan aon chomhaid ar chor ar bith.

Afterword

vmspike mhol leagan ordaithe le toradh cosúil leis:

cp -a -T /source /target

Oz_Alex

cp -aT /source /target

TABHAIR FAOI DEARA: cás litreach T tá an bhrí. Má mheascann tú é, gheobhaidh tú bruscar iomlán: athróidh an treo cóipeála.
Buíochas:

  • Cuideachtaí RUVDS.COM le haghaidh tacaíochta agus an deis a fhoilsiú ar do bhlag ar Habré.
  • In aghaidh an íomhá Coincheap Triple. Tá an pictiúr an-mhór agus mionsonraithe, is féidir a oscailt i bhfuinneog ar leith.

PS Seol aon earráid a thugann tú faoi deara i dteachtaireacht phríobháideach. Méadóidh mé mo karma as seo.

ordú cp: fillteáin comhaid a chóipeáil i gceart i * nix

Foinse: will.com

Add a comment