C'est un peu drôle, il existe de nombreuses façons dont les outils de ligne de commande Linux sont nettement supérieurs à ceux de Windows, mais une chose à laquelle je n'ai pas trouvé d'équivalent est robocopy . Robocopy est bien plus polyvalent que cp
et je ne vois pas comment faire ce que je veux avec les outils Linux.
Un cas d’utilisation spécifique est que j’ai deux répertoires contenant principalement des fichiers similaires, l’un ayant des fichiers source plus récents et l’autre des fichiers de contenu que l’autre répertoire n’a pas, et éventuellement des fichiers source plus récents (pour un site Web). Je souhaite copier les fichiers du dernier répertoire dans le premier, en ajoutant de nouveaux fichiers de contenu, par exemple, sans écraser les fichiers les plus récents du répertoire de destination.
J'ai essayé de comprendre comment faire cela sous Linux pendant peut-être une demi-heure. J'ai décidé que je devrais probablement apprendre le script bash ou quelque chose pour faire ce que je voulais, puis je me suis rendu compte que je pouvais simplement utiliser Robocopy. J'ai aussi eu d'autres exigences. En fait, je convertissais un site Web Python (Django) d’un référentiel SVN vers un référentiel Git, et je voulais être sûr que je n’ai pas eu de modifications non validées dans SVN. Cependant, je voulais exclure conditionnellement les répertoires .svn
et les fichiers Python compilés par .pyc
. La commande suivante robocopy fait exactement ce que je veux:
robocopy source destination /XO /E /XD .svn /XF *.pyc
Existe-t-il un équivalent de Robocopy sous Linux? J'ai brièvement examiné rsync
, mais il me semblait que je devais configurer un serveur rsync avant de tenter de synchroniser les dossiers.
On dirait que rsync est vraiment ce que vous recherchez. Vous n'avez pas besoin de configurer un "serveur rsync" pour copier les fichiers d'un ordinateur à un autre. Rsync prend en charge la copie de fichiers via SFTP (SSH File Transfer) que la plupart des boîtes Linux ont déjà activées (si elles ne sont pas désactivées manuellement).
Voir Fichiers miroir de Lifehacker sur plusieurs systèmes avec rsync pour plus de détails:
Que vous souhaitiez sauvegarder vos données, distribuer des fichiers en toute sécurité ou dupliquer vos documents de travail sur Internet, du bureau à la maison, entre des ordinateurs de votre réseau local ou de votre ordinateur sur votre serveur Web, rsync peut faire le travail. Aujourd'hui, nous utilisons rsync pour mettre en miroir des dossiers entre Mac et PC via une connexion sécurisée en ligne de commande.
Rsync est gratuit (comme dans le discours) et multiplateforme, ce qui signifie qu'il synchronise les fichiers entre les systèmes d'exploitation (Windows/Cygwin, Mac OS, Linux); cela fonctionne sur ssh, il est donc crypté et sécurisé; contrairement à FTP, c’est incrémental , donc seules les parties de changé les fichiers sont transférés, pas les fichiers entiers , ce qui le fait ressembler à Speedy Gonzalez; et le fait que sa ligne de commande le rend scriptable et facilement automatisé.
rsync copiera les fichiers d’un répertoire à un autre sur le même ordinateur que robocopy. Voici la commande rsync équivalente à votre commande robocopy:
rsync -auv --exclude '.svn' --exclude '*.pyc' source destination
Cela copiera récursivement la source sur la destination et exclura les anciens fichiers ainsi que les répertoires/fichiers '.svn' et '* .pyc'.