Wie kopieren wir eine komplette Verzeichnisvorlage/-struktur oder ein Skelett?
Als nichts verwendete Anweisung:
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
-a, --archive same as -dR --preserve=all
--attributes-only don't copy the file data, just the attributes
--backup[=CONTROL] make a backup of each existing destination file
-b like --backup but does not accept an argument
--copy-contents copy contents of special files when recursive
-d same as --no-dereference --preserve=links
-f, --force if an existing destination file cannot be
opened, remove it and try again (this option
is ignored when the -n option is also used)
-i, --interactive prompt before overwrite (overrides a previous -n
option)
-H follow command-line symbolic links in SOURCE
-l, --link hard link files instead of copying
-L, --dereference always follow symbolic links in SOURCE
-n, --no-clobber do not overwrite an existing file (overrides
a previous -i option)
-P, --no-dereference never follow symbolic links in SOURCE
-p same as --preserve=mode,ownership,timestamps
--preserve[=ATTR_LIST] preserve the specified attributes (default:
mode,ownership,timestamps), if possible
additional attributes: context, links, xattr,
all
--no-preserve=ATTR_LIST don't preserve the specified attributes
--parents use full source file name under DIRECTORY
-R, -r, --recursive copy directories recursively
--reflink[=WHEN] control clone/CoW copies. See below
--remove-destination remove each existing destination file before
attempting to open it (contrast with --force)
--sparse=WHEN control creation of sparse files. See below
--strip-trailing-slashes remove any trailing slashes from each SOURCE
argument
-s, --symbolic-link make symbolic links instead of copying
-S, --suffix=SUFFIX override the usual backup suffix
-t, --target-directory=DIRECTORY copy all SOURCE arguments into DIRECTORY
-T, --no-target-directory treat DEST as a normal file
-u, --update copy only when the SOURCE file is newer
than the destination file or when the
destination file is missing
-v, --verbose explain what is being done
-x, --one-file-system stay on this file system
-Z set SELinux security context of destination
file to default type
--context[=CTX] like -Z, or if CTX is specified then set the SELinux
or SMACK security context to CTX
Bitte geben Sie eine gute Anleitung
Antwort1
Wenn Sie nur Dateien vom Typ kopieren möchtenVerzeichnis, rekursiv und nicht die anderen Dateitypen, die Sie verwenden können pax
(Standard, kann aber nicht mit beliebigen Dateinamen umgehen, es sei denn, Sie verwenden nicht standardmäßige Erweiterungen, und ich kenne keine Open Source-Implementierung, die kompatibel ist oder mit beliebigen Dateinamen umgehen kann) oder cpio
/ tar
(üblich, aber mit unterschiedlicher Syntax zwischen den Implementierungen, und nicht alle können mit beliebigen Dateinamen umgehen oder alle Metadaten kopieren) oder rsync
(nur eine Implementierung, aber im Allgemeinen nicht standardmäßig installiert).
Um beispielsweise die Struktur (einschließlich Metadaten, sofern möglich) aus dem $src
Verzeichnis in das $dst
folgende Verzeichnis zu duplizieren:
Mit libarchive bsdtar
:
(
cd -P -- "$src" &&
find . -type d -print0 | bsdtar --null -T - -cnf -
) | (cd -P -- "$dst" && bsdtar -xpSf -)
Mit rsync
:
rsync -aAX --include='*/' --exclude='*' -- "$src/" "$dst/"
Beachten Sie, dass einige Metadaten nur root
kopiert werden können (wahrscheinlich Eigentumsrechte und einige erweiterte Attribute). Weitere Informationen finden Sie in der Dokumentation -X
auf der rsync
Manpage darüber, welche erweiterten Attribute beibehalten werden.