Supposons que j'ai deux systèmes identiques. Sur le premier système, j'ai créé un lien symbolique. Sur le second, je veux copier ce lien symbolique via sftp et le lien symbolique fonctionnera de la même manière (c'est-à-dire si le lien symbolique vers /etc/
, après l'avoir copié, seul le lien symbolique sera copié et uniquement le lien symbolique (pas les fichiers liés))
Avez-vous des idées sur la façon dont je peux le faire / si je peux le faire? Je veux seulement copier le lien symbolique, rien d'autre; juste la référence.
sftp
ne vous laissera pas faire ça.rsync
peut, comme peutssh cp ...
Réponses:
Si vous tarez le lien symbolique, vous pouvez copier le tarball sur la machine distante comme vous le souhaitez. Lorsque vous le décompacterez, vous constaterez que vous n'avez copié que le lien symbolique et rien d'autre. Par exemple:
Pour tester cela, j'ai d'abord créé un fichier texte.
Créez ensuite un lien symbolique vers le fichier et compressez-le dans un gzip tar.
Transférez ce fichier sur votre autre machine, puis décompressez-le:
Vous constaterez que le lien symbolique est là, mais pas le fichier d'origine vers lequel il pointait.
Bien sûr, si vous vouliez transférer à la fois le fichier d'origine et le lien symbolique tout en préservant leur relation, vous pouvez les mettre tous les deux dans l'archive et ils seraient tous les deux transférés, et le lien symbolique devrait toujours être correctement pointé vers le fichier d'origine lorsque vous décompressez l'archive tar à l'emplacement de destination.
la source
sftp
( linux.die.net/man/1/sftp )! Il y a la commandesymlink
spécialement pour ce dont vous semblez avoir besoin.On ne sait pas exactement comment vous souhaitez traiter le lien symbolique. Si je comprends bien, vous souhaitez recréer le lien symbolique sur l'autre système. Les liens symboliques dépendent du système de fichiers, le protocole utilisé pour copier les fichiers doit en être conscient. Un bon exemple est d'utiliser
rsync
avec l'-a
option.plus précisément, l'
-l
option, mais-a
c'est probablement ce que vous voulez.Il va recréer des liens symboliques sans tirer sur les cibles (déréférencer les liens).
la source
sftp
traversera les sous-répertoires avec le-r
commutateur, mais ne suivra pas les liens symboliques, car il résume les systèmes de fichiers.sftp
prend en charge la création de liens symboliques sur l'hôte. Vous devriez au moins essayer de télécharger uniquement le lien symbolique (lorsque le lien symbolique est~/etc
-> se/etc/
passer deget etc
la fin/
) et voir ce qui se passe. Cela dépend du FS du serveur et du client. Veuillez modifier votre question d'origine en conséquence!Une solution très simple (pour le répertoire personnel):
ou
par exemple
pour fournir un emplacement .bashrc lié à une autre destination (par exemple, un réseau).
la source
Je sais que @polemon a déjà répondu à cette question.
Mais faire mon peu pour une solution rapide.
J'ai dû faire man rsync pour savoir quel interrupteur je veux utiliser ...
Cependant, dans votre cas, vous devez vous assurer que les liens ne sont pas rompus!
la source
Les autres réponses expliquent déjà comment transférer un lien symbolique vers une autre machine. Cependant, quelle que soit la façon dont vous transférez le lien symbolique, vous ne pourrez pas utiliser ce lien symbolique pour accéder à un fichier
/etc/
via FTP, SFTP, SCP, SSH ou de toute autre manière. Ces services ont tendance à être chrootés vers un répertoire donné ou autrement empêchés de fournir l'accès à des fichiers qui n'ont pas été explicitement partagés. Bien sûr, il existe toujours des moyens de contourner cela sur les anciens systèmes, mais ces vulnérabilités ont tendance à être corrigées et mises à niveau dès qu'elles sont détectées. Je suis désolé, je ne pense pas que ce que vous voulez faire sera possible.la source