Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Rekursiv kopieren inkl. Verzeichnissen, Verzeichnisbaum

Frage Linux

Mitglied: lexa-lexa

lexa-lexa (Level 1) - Jetzt verbinden

13.12.2012 um 02:35 Uhr, 5671 Aufrufe, 8 Kommentare

cp -r und cp -P bewirkt das nicht

Wie kann ich unter Linux eine Datei unter Beibehaltung der Verzeichnisstruktur kopieren? Wenn das Verzeichnis (Ordner) nicht existiert, soll es erstellt werden:

cp /das/ist/die/datei.txt /tmp

Ergebnis: /tmp/das/ist/die/datei.txt

Mitglied: b.enni
13.12.2012 um 06:36 Uhr
Moin,

-r
--recursive

Bei man cp brauchst du noch nicht mal weit runterscrollen...

Grüße,
Benni
Bitte warten ..
Mitglied: nevermind2012
13.12.2012 um 07:48 Uhr
Dann kann er aber nur sagen

cp -r /das /tmp

und es landet alles was unter /das liegt in /tmp, oder täusch' ich mich?
Also z.B. auch /das/datei-xyz oder das/ist/datei-abc.

Kann natürlich sein, dass das genau das ist was er möchte, aber ich habe es so verstanden, dass er nur /das/ist/die/datei.txt kopieren will (inklusive der darüber liegenden Verzeichnisstruktur), nicht aber andere Dateien die eventuell noch in den höheren Verzeichnissen liegen.
Bitte warten ..
Mitglied: lexa-lexa
13.12.2012, aktualisiert um 14:49 Uhr
Hi Benni,

Bei man cp brauchst du noch nicht mal weit runterscrollen...

du hast die Problemstellung nicht verstanden.

Und drüber steht auch ganz fett: "cp -r und cp -P bewirkt das nicht"

Probier's bitte nochmal, falls du ausser Hinweisen auf die manpages noch mehr drauf hast.
Fürchterlich, diese ManPage-Schluckreflexe der vermeintlichen Linux-Kenner

Gruss Axel

edit: Anrede + Ironie
Bitte warten ..
Mitglied: lexa-lexa
13.12.2012 um 14:46 Uhr
Zitat von nevermind2012:
...ich habe es so verstanden, dass er nur
/das/ist/die/datei.txt kopieren will

Korrekt! Nur einzelne Dateien inkl. deren Pfad. Nicht komplette Pfade, das wäre ja zu einfach
Bitte warten ..
Mitglied: nevermind2012
13.12.2012 um 16:12 Uhr
So... hat ein Weilchen gedauert, aber was soll man während der Arbeitszeit auch sonst machen *lol*

  1. BEGIN -------------------------------------------------------

#!/bin/bash

#-------------------------------------------------------

FILE=datei

FOLDER=das

TOPFOLDER=/home/user/

DEST=/tmp

#-------------------------------------------------------

cd $TOPFOLDER

DIR=$(find $FOLDER -name $FILE)

LIST=$(echo $DIR | tr "/" "\n")

cd $DEST

for i in $LIST
do

[ $i != $FILE -a ! -e $i ] && mkdir $i

if [ $i != $FILE ]; then
cd $i
else
cp $TOPFOLDER$DIR .
fi

done

  1. END ------------------------------------------------------

FILE ist der Dateiname
FOLDER ist das Verzeichnis ab dem kopiert werden soll
TOPFOLDER muss (wie der Name schon erahnen lässt) das Verzeichnis über FOLDER sein
DEST ist das Zielverzeichnis

So wie es oben steht kopierte das Skript die Datei

/home/user/das/ist/die/datei

nach

/tmp/das/ist/die/datei

Das "find" kann man natürlich auch weglassen und den Pfad zur Datei direkt angeben, dann spart man sich auch die TOPFOLDER-Geschichte.
Bitte warten ..
Mitglied: lexa-lexa
13.12.2012 um 18:46 Uhr
Zitat von nevermind2012:
So... hat ein Weilchen gedauert, aber was soll man während der Arbeitszeit auch sonst machen *lol*

Danke Dir für die Inspiration!

Dein Script kann so nicht verwendet werden, denn es geht natürlich nicht um *eine* Datei, die hätte ich schnell mal händisch kopiert, sondern eine Dateiliste. Da dort einige Dateinamen doppelt vorkommen, wird das Script vermutlich am "find" Befehl ins Stolpern kommen.

Habe gerade auch (aber *nach* der Arbeit ) wieder Lust zum scripten bekommen und eine Stunde lang vergeblich versucht es hinzubekommen. Problem war immer wieder, dass der letzte Parameter, der ja der Dateiname war, als Verzeichnis erstellt wurde:
#!/bin/bash 
 
FLIST="files.txt" 
 
while read F ; do 
 
   DEST="/tmp/test1" 
   LIST=$(echo $F | tr "/" "\n") 
 
   for i in $LIST ; do 
      DEST="$DEST/$i" 
      echo "Ziel: $DEST" 
      if [ ! -d $DEST ] && [ ! -f $DEST ] ; then 
         mkdir $DEST 
      fi 
   done 
 
done < $FLIST
Das war mir dann doch zu doof, weil es unmögliche Ausmasse annimmt. Daher habe ich mich nun entschlossen, kurzen Prozess zu machen und TOPFOLDER zu ignorieren:
#!/bin/bash 
 
FLIST="files.txt" 
DEST="/tmp" 
 
while read F ; do 
 
   cp -r --parents $F $DEST 
 
done < $FLIST
PS: Eigentlich ging ich davon aus, dass "cp -P" dasselbe ist wie "cp --parents", es gibt aber scheinbar Unterschiede in den Distris. Aktuell bewege ich mich auf einer älteren SuSE. Werde gelegentlich mal bei Debian nachschauen.
Bitte warten ..
Mitglied: b.enni
14.12.2012 um 06:21 Uhr
Moin lexa,

dann entschuldige meine unqualifizierte Antwort.
Ich habe die Frage falsch verstanden und das fett geschriebene dazu noch überlesen - war alles vor dem ersten Kaffee.
Bitte warten ..
Mitglied: lexa-lexa
14.12.2012 um 14:56 Uhr
Hi Benni,

wird gern angenommen. Vor dem ersten Kaffe ist (fast) alles entschuldbar
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Verzeichniss überwachen Datei kopieren und umbenennen (6)

Frage von fischle63 zum Thema Batch & Shell ...

Visual Studio
Unterbruch rekursiver Funktion durch Blacklist (C-Sharp) (3)

Frage von clragon zum Thema Visual Studio ...

Windows Userverwaltung
Berechtigungen Verzeichnisse (1)

Frage von uridium69 zum Thema Windows Userverwaltung ...

Windows Server
Verzeichnisse löschen (2)

Frage von MiSt zum Thema Windows Server ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Monitoring
Netzwerk-Monitoring Software (18)

Frage von Ghost108 zum Thema Monitoring ...

Windows 10
Seekrank bei Windows 10 (17)

Frage von zauberer123 zum Thema Windows 10 ...

Windows Server
gelöst Kopiervorgang schlägt fehl, weil Datei- und Ordnername zu lang sind (14)

Frage von Schroedi zum Thema Windows Server ...

Windows 10
Windows 10 Fall Creators Update Fehler (13)

Frage von ZeroCool23 zum Thema Windows 10 ...