Fermana cp: peldankên pelan di *nix de rast kopî dike

Fermana cp: peldankên pelan di *nix de rast kopî dike

Ev gotar dê hin tiştên ne diyar ên ku bi karanîna ve girêdayî ne diyar bike wildcards dema kopîkirinê, tevgera fermana nezelal cp dema kopîkirinê, û her weha rêbazên ku destûrê didin we ku hûn hejmareke mezin a pelan bi rengek rast kopî bikin bêyî ku bişkînin an hilweşînin.

Ka em bibêjin ku divê em her tiştî ji peldanka / source berbi peldanka /target kopî bikin.

Yekemîn tiştê ku tê bîra min ev e:

cp /source/* /target

Ka em tavilê vê fermanê rast bikin:

cp -a /source/* /target

Ключ -a dê kopîkirina hemî taybetmendiyan, mafan û vegerandinê zêde bike. Dema ku ji nû ve hilberandina rast a mafan ne hewce ye, kilîtek bes e -r.

Piştî kopîkirinê, em ê bibînin ku hemî pel nehatine kopî kirin - pelên ku bi xalek mîna dest pê dikin:

.profile
.local
.mc

û yên wekî.

Çima ev yek çêbû?

Ji ber ku kartên hovane ji hêla şêlê ve têne hilberandin (bash di rewşeke tîpîk de). Ji hêla xwerû, bash dê hemî pelên ku bi xalan dest pê dikin paşguh bike, ji ber ku ew wan wekî veşartî digire. Ji bo ku em ji vê tevgerê dûr nekevin, divê em tevgerê biguherînin bash bi karanîna fermanê:

shopt -s dotglob

Ji bo ku ev guheztina tevgerê piştî ji nû ve destpêkirinê berdewam bike, hûn dikarin bi vê fermanê di peldankê de pelek wildcard.sh biafirînin. /etc/profile.d (Dibe ku belavkirina we peldankek cûda hebe).

Û heke di pelrêça çavkaniyê de pel tunebin, wê hingê şêl dê nikaribe tiştek li şûna stêrkê biguhezîne, û kopîkirin jî dê bi xeletiyekê têk biçe. Li hemberî vê rewşê bijarde hene failglob и nullglob. Em ê hewce bikin ku saz bikin failglob, ku dê rê li ber pêkanîna fermanê bigire. nullglob dê nexebite, ji ber ku ew rêzek bi tîpên hov ên ku hevhev nedîtine vediguherîne rêzek vala (dirêjahiya sifir), ku ji bo cp dê bibe sedema xeletiyekê.

Lêbelê, heke di peldankê de bi hezaran pel an jî bêtir hebin, wê hingê divê nêzîkatiya wildcards bi tevahî were berdan. Rastî ev e bash wildcards di nav rêzek fermanek pir dirêj de berfireh dike mîna:

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

Li ser dirêjahiya rêzika fermanê sînorek heye, ku em dikarin bi karanîna fermanê fêr bibin:

getconf ARG_MAX

Werin em dirêjahiya herî zêde ya rêzika fermanê di byte de bistînin:

2097152

An:

xargs --show-limits

Em tiştek wekî:

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

Ji ber vê yekê, bila em bi tevahî bêyî tîpên çolê bikin.

Ka em tenê binivîsin

cp -a /source /target

Û li vir em bi nezelaliya tevgerê re rû bi rû ne cp. Ger peldanka /target tune be, wê hingê em ê tiştê ku ji me re hewce dike bistînin.

Lêbelê, heke peldanka armanc hebe, wê hingê pel dê li peldanka /target/source were kopî kirin.

Em her gav nikarin peldanka /target-ê ji berê de jêbikin, ji ber ku dibe ku pelên ku ji me re hewce ne hebin û mebesta me, mînakî, ew e ku em pelên li /target bi pelên ji / source re temam bikin.

Ger peldankên çavkanî û meqsed wek hev bihatana binavkirin, wek nimûne, me ji / source bo /home/source kopî dikir, wê hingê em dikarin fermanê bikar bînin:

cp -a /source /home

Û piştî kopîkirinê, pelên li /home/çavkaniyê dê bi pelên ji /çavkaniyê werin zêdekirin.

Ev pirsgirêkek mentiqî ye: heke peldankan bi heman navî bin, em dikarin pelan li peldanka mebestê zêde bikin, lê heke ew cûda bin, wê hingê peldanka çavkanî dê di hundurê cîhê de were danîn. Meriv çawa pelan ji / source ber / armancê bi karanîna cp bêyî qertên hovane kopî dike?

Ji bo ku em li dora vê tixûbê zirardar derbas bibin, em çareseriyek ne-eşkere bikar tînin:

cp -a /source/. /target

Yên ku bi DOS û Linux-ê dizanin jixwe her tiştî fêm kirine: di hundurê her peldankê de 2 peldankên nedîtbar hene "." û "..", ku girêdanên pseudo-peldankên peldankên heyî û bilind in.

  • Dema kopîkirinê cp hebûna xwe kontrol dike û hewl dide ku /target/ biafirîne.
  • Derhênerek wusa heye û ew /target e
  • Pelên ji / source rast li /target têne kopî kirin.

Ji ber vê yekê, wê di çarçoveyek stûr de di bîranîna xwe de an li ser dîwarê daleqînin:

cp -a /source/. /target

Reftara vê fermanê diyar e. Dê her tişt bê xeletî bixebite, bêyî ku mîlyonek pelên we hebin an qet tune.

vebiguherin

Heke hûn hewce ne kopî bikin hemî pelan ji peldankek berbi peldankek din, em kartên hovane bikar naynin, çêtir e ku em wan li şûna wan bikar bînin cp di dawiya peldanka çavkaniyê de bi heyamekê re tê hev kirin. Ev ê hemî pelan, tevî yên veşartî, kopî bike, û dê bi mîlyonan pelan an jî bêyî pelan têk nebe.

Paşê

vmspike guhertoyek fermanê bi encamek wekhev pêşniyar kir:

cp -a -T /source /target

Oz_Alex

cp -aT /source /target

BİXWÎNE: doza nameyê T wateya xwe heye. Ger hûn wê tevlihev bikin, hûn ê bi tevahî zibil bibin: rêça kopîkirinê dê biguhere.
Spas:

  • Pargîdan RUVDS.COM ji bo piştgirî û derfeta weşandina li ser bloga xwe li ser Habré.
  • Per wêneyê Têgeha Triple. Wêne pir mezin û berfireh e, dikare di pencereyek cûda de were vekirin.

PS Ji kerema xwe xeletiyên ku hûn dibînin di peyamek taybet de bişînin. Ez ji bo vê karma xwe zêde dikim.

Fermana cp: peldankên pelan di *nix de rast kopî dike

Source: www.habr.com

Add a comment