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?
Hoe kan ik een mappenstructuur, dir1, kopiëren naar dir2, (met alle submappen) op Unix met behulp van het terminalvenster?
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.
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.
Ik hou van
cp -axv source dest
Rsync is een ander goed hulpmiddel voor dit
rsync -va source dest