ubuntuusers.de

komisches Verhalten von cp

Status: Gelöst | Ubuntu-Version: Server 22.04 (Jammy Jellyfish)
Antworten |

Christofer

Avatar von Christofer

Anmeldungsdatum:
2. Februar 2007

Beiträge: 185

Hallo Community,

ich habe ein Verhalten beobachtet, welches mir nicht einleuchtet. Ich habe ein Webverzeichnis das ich als Master immer wieder kopiere mit dem Befehl

1
sudo cp -r /var/www/verzeichnis/* /var/www/neues_verzeichnis

In dem Verzeichnis liegen auf unterschiedlichen Ebenen mehrere .htaccess-Dateien z.B.:

/var/www/verzeichnis/.htaccess

/var/www/verzeichnis/unterverzeichnis/.htaccess

Eigentlich sollte er alle Dateien, auch die versteckten Dateien und Verzeichnisse kopieren (Option -r), allerdings kopiert er die .htacces-Datei im Stammverzeichnis /var/www/verzeichnis/.htaccess nicht, wohl aber die im Unterverzeichnis /var/www/verzeichnis/unterverzeichnis/.htaccess.

Kopiere ich das Ganze wie folgt:

1
sudo cp -r /var/www/verzeichnis /var/www/neues_verzeichnis

Kopiert er den ganzen Ordner mit, erzeugt also folgendes:

/var/www/neues_verzeichnis/verzeichnis

ABER dann ist die /var/www/neues_verzeichnis/verzeichnis/.htaccess-Datei mit enthalten. Was läuft da falsch?

An den Rechten und dem Eigentümer der Datei kann es nicht liegen, denn die unterscheidet sich da nicht von den anderen:

-rw-r--r-- 1 www-data www-data 16728 Jun 28 09:29 .htaccess

Danke schon mal und Gruß

Christofer

schragge

Anmeldungsdatum:
27. Januar 2022

Beiträge: 181

Christofer schrieb:

Eigentlich sollte er alle Dateien, auch die versteckten Dateien und Verzeichnisse kopieren (Option -r)

Deine Annahme ist falsch. Die Option -r besagt nur, dass alle Unterverzeichnisse inkl. alle drin erhaltene Dateien kopiert werden sollen (und das beinhaltet natürlich auch versteckte Dateien wie .htaccess aus diesen Unterverzeichnissen). Ein Sternchen aber wird gar nicht von cp, sondern von der Shell interpretiert, und versteckte Dateien werden dabei nicht berücksichtigt. Du kannst es selbst sehen:

echo /var/www/verzeichnis/* 

Versuch den zweiten Befehl mit -T:

sudo cp -rT /var/www/verzeichnis /var/www/neues_verzeichnis 

Christofer

(Themenstarter)
Avatar von Christofer

Anmeldungsdatum:
2. Februar 2007

Beiträge: 185

Danke,das hat geholfen!

san04

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1264

Der erste Befehl sollte auch funktionieren, wenn du das Verzeichnis explizit angibst:

sudo cp -r /var/www/verzeichnis/. /var/www/neues_verzeichnis 
Antworten |