Erzwinge das Kopieren von cp auf baumelnde Symlinks

15

Gibt es eine Möglichkeit, cpdas Kopieren auf einen baumelnden Symlink zu erzwingen (Bash 4.2.5, Ubuntu 12.04)?

cp a-file path/to/danling/symlink/a-file
cp: not writing through dangling symlink `path/to/danling/symlink/a-file`

cp -f scheint in diesem Fall ohnmächtig zu sein und führt zu der gleichen Botschaft.

Marcus Junius Brutus
quelle
Hast du es cp -fstattdessen versucht ?
Rohith Madhavan
@RohithMadhavan yep; gleiche Nachricht (Ich habe gerade die Frage aktualisiert)
Marcus Junius Brutus

Antworten:

21

Machen Sie cpdie Zieldatei entfernen , bevor das Kopieren:

$ ln -s /random/file f              
$ cp -f a f                  
cp: not writing through dangling symlink ‘f’
$ cp --remove-destination a f
$ diff a f && echo yes
yes

Von man cp:

--remove-destination
      remove  each existing destination file before attempting to open
      it (contrast with --force)
muru
quelle
2

Nur Verwendung , unlink theSymLinkwo theSymLinkdie eigentliche Symlink ist, dann versuchen Sie es erneut

SwCharlie
quelle
3
Dies wird funktionieren, aber beachten Sie, dass dies unlinkden gleichen Effekt hat (und damit keinen Vorteil im Vergleich zu), der häufiger verwendet wird rm. Insbesondere wie rm foo, unlink foowird eine Datei zu löschen , fooauch wenn es sich um eine normale Datei ist und keine symbolische Verbindung. Die Verwendung von unlinkanstelle von rm(oder mv --remove-destination ...) schützt nicht vor versehentlichem Datenverlust.
Eliah Kagan