2010-12-15 15:45:40 +0000 2010-12-15 15:45:40 +0000
81
81

Kopieer een map op Unix

Hoe kan ik een mappenstructuur, dir1, kopiëren naar dir2, (met alle submappen) op Unix met behulp van het terminalvenster?

Antwoorden (3)

117
117
117
2010-12-15 15:49:02 +0000
cp -rf /source/path/ /destination/path/

-r = recursief, kopieert alle submappen

-f = force, als een bestaand doelbestand niet kan worden geopend, verwijder het dan en probeer het opnieuw

Note Je moet voorzichtig zijn met het gebruik van de -f vlag omdat het alles waarnaar je kopieert forceert te overschrijven. Dank @Nifle voor deze suggestie.

Je kunt het jokerteken * gebruiken om alle bestanden in de map te kopiëren als dat nodig is.

11
11
11
2010-12-15 16:07:16 +0000

Terwijl de cp -R antwoorden juist zijn (BTW het geval van de vlag op BSD moet hoofdletter zijn, beide worden ondersteund op linux), is er een oude bezwering met tar :

$ tar cf - . | (cd DIR; tar xf - )

Waarom zou je dat in godsnaam doen? Omdat tar een tamelijk verfijnd begrip heeft van links, zowel hard als symbolisch.

Wil je dat je kopie bestaande symbolische links vervangt door een die dezelfde tekst heeft? Of met links naar hetzelfde doel (met aanpassing van relatieve paden om te compenseren)? Of met bitwise kopieën van het doel?

Als twee bestanden in het origineel hard gelinkt zijn, moet de nieuwe structuur dan twee kopieën van de gegevens hebben of slechts een?

Beslissingen, beslissingen. Tar heeft verstandige standaardwaarden, maar laat je er heel specifiek over zijn.

9
9
9
2010-12-15 19:54:18 +0000

Ik hou van

cp -axv source dest

Rsync is een ander goed hulpmiddel voor dit

rsync -va source dest