4 votes

Fichiers inclus/exclus pour "scp -r".

Dossier local supposé comme ci-dessous :

/test/subfolder
/test/subfolder/file1.txt
/test/subfolder/page1.htm
/test/subfolder/page2.htm
/test/.hiddenfolder
/test/./hidenfolder/file2
  1. Comment exclure le dossier .hiddenfolder à transférer lors de l'exécution de "scp -r test user@ip:/" ?

  2. Comment inclure uniquement les fichiers *.htm et les transférer vers le sous-dossier correspondant sur le serveur distant ?

  3. D'autres commandes peuvent-elles faire ce travail plus facilement ?

4voto

FreeMemory Points 4742

Je ne pense pas que scp seul puisse faire ce que vous demandez. Vous devriez plutôt étudier rsync.

Je l'utilise pour les sauvegardes avec un filtre pour exclure les fichiers dont les noms ne fonctionnent pas sur les volumes NTFS.

# the exclude is to filter out files with invalid names on NTFS
/usr/bin/rsync -rgqoxD --delete --exclude='*[:\?]*' /home/andrewr/src /filer001/syncd/src

vous pouvez également lui passer le nom d'un fichier qui contient les fichiers à exclure ( --exclude-from=file )

Modifier : Voici un exemple de ligne de commande qui fonctionne pour votre exemple :

cd src; find . -type f -name "*.htm" | rsync -av --files-from=- . host:dir

2voto

bigmattyh Points 9167

Si vous avez déjà des clés ssh pré-partagées, vous pouvez d'abord créer tous les répertoires distants de la manière suivante :

# get all directories in this tree
for DIR in `find . -type d`
    do
        # create remote directory
        ssh user@host mkdir -p /path/to/start/$DIR
        # copy *only* *.htm files
        scp $DIR/*.htm user@host:/path/to/start/$DIR
    done

Je pense que c'est à peu près ce que vous cherchez.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X