[unix] symbolic links 'verwijderen'

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
Ik heb een directory waar allemaal symbolic links in zitten en verwijzen naar files elders. De directory zelf bevat geen echte files.

Nu wil ik alle links verwijderen en hier echte copyen van maken. Ik doe het nu met de hand: alle files copieren (via de symbolic links), links verwijderen en terug copieren. Volgens mij moet dit handiger kunnen, google kan me niet verder helpen. Dus de vraag is: Is het mogelijk om symbolic links te verwijderen en hier echter copyen van te maken zonder tussenstap?

if broken it is, fix it you should


Acties:
  • 0 Henk 'm!

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 06-10 22:36

JaQ

elgringo schreef op vrijdag 16 juli 2010 @ 11:20:
Ik heb een directory waar allemaal symbolic links in zitten en verwijzen naar files elders. De directory zelf bevat geen echte files.

Nu wil ik alle links verwijderen en hier echte copyen van maken. Ik doe het nu met de hand: alle files copieren (via de symbolic links), links verwijderen en terug copieren. Volgens mij moet dit handiger kunnen, google kan me niet verder helpen. Dus de vraag is: Is het mogelijk om symbolic links te verwijderen en hier echter copyen van te maken zonder tussenstap?
Volgens mij kan dit niet zonder tussenstap.

Je kan het wel scripten, zoals unln doet (gevonden met "convert symbolic link to copy" in google):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/sh

# unln makes a copy of a file and then unlinks the file and replaces it
# with the copy.  this is primarily useful with symlinks... and in
# combination with the lndir command.

r=0
for i in $*; do
    j=`mktemp -q -- "${i}.unln.XXXXXX"`
    if [ $? -ne 0 ]; then
        echo "$0: unable to mktemp ${i}.unln.XXXXXX, skipping" 1>&2
        r=1
    else
        cp -p -- "$i" "$j" && rm -- "$i" && mv -- "$j" "$i"
    fi
done

exit $r

Egoist: A person of low taste, more interested in themselves than in me


Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 10:46

Kees

Serveradmin / BOFH / DoC
is het niet handiger om er hardlinks van te maken in plaats van een copy?

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • Onno
  • Registratie: Juni 1999
  • Niet online
JaQ schreef op vrijdag 16 juli 2010 @ 11:40:
code:
1
        cp -p -- "$i" "$j" && rm -- "$i" && mv -- "$j" "$i"
Die rm lijkt me hier niet nodig, en zorgt er wel voor dat er tijdelijk even geen bestand is met de naam $i. Als je mv de bestaande link laat overschrijven heb je daar geen last van, aangezien dat een atomaire bewerking is. (binnen hetzelfde bestandssysteem althans)
Kees schreef op vrijdag 16 juli 2010 @ 11:46:
is het niet handiger om er hardlinks van te maken in plaats van een copy?
Dat lijkt me erg afhangen van wat de bedoeling van die kopieën is. :)

Acties:
  • 0 Henk 'm!

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 06-10 22:36

JaQ

Kees schreef op vrijdag 16 juli 2010 @ 11:46:
is het niet handiger om er hardlinks van te maken in plaats van een copy?
Dat kan enkel als het op hetzelfde filesystem is (toch?)
Onno schreef op vrijdag 16 juli 2010 @ 12:48:
Die rm lijkt me hier niet nodig, en zorgt er wel voor dat er tijdelijk even geen bestand is met de naam $i. Als je mv de bestaande link laat overschrijven heb je daar geen last van, aangezien dat een atomaire bewerking is. (binnen hetzelfde bestandssysteem althans)
Ik zou zeggen: mail Dean Gaudet, hij is de auteur van het script.

Het script was meer een aanduiding hoe gemakkelijk een script hiervoor te vinden was op google. (gezocht op "convert symbolic link to copy").

Egoist: A person of low taste, more interested in themselves than in me