rsync4j --Je veux toucher rsync en Java.

Je vous remercie. C'est marrant. Je souhaite utiliser rsync pour le développement d'un certain service. C'est aussi java. Cependant, je n'ai rien trouvé de tel que rsync implémenté en java.

Lors de mes recherches, j'ai trouvé ce qui suit

https://github.com/fracpete/rsync4j

Aperçu

Ce rsync4j est un frontal rsync qui fonctionne sous Windows et Linux. Sous Windows, rsync se fait en déployant le binaire requis pour rsync une fois quelque part et en l'exécutant.

tester

Fonctionne normalement, ouais
Z:\users\desktop\a>ls
rsync4j-all-3.1.2-12-spring-boot.jar

Z:\users\desktop\a>java -jar rsync4j-all-3.1.2-12-spring-boot.jar
usage: com.github.fracpete.rsync4j.RSync
       [-h] [--output-commandline] [--maxtime MAXTIME] [-v]
       [--info INFO] [--debug DEBUG] [--msgs2stderr] [-q] [--no-motd] [-c]
       [-a] [-r] [-R] [--no-implied-dirs] [-b] [--backup-dir BACKUPDIR]
       [--suffix SUFFIX] [-u] [--inplace] [--append] [--append-verify] [-d]
       [-l] [-L] [--copy-unsafe-links] [--safe-links] [--munge-links] [-k]
       [-K] [-H] [-p] [-E] [--chmod CHMOD] [-X] [-o] [-g] [--devices]
       [--specials] [-t] [-O] [-J] [--super] [--fake-super] [-S]
       [--preallocate] [-n] [-W] [-x] [-B BLOCKSIZE] [-e RSH]
       [--rsync-path RSYNCPATH] [--existing] [--ignore-existing]
       [--remove-source-files] [--delete] [--delete-before]
       [--delete-during] [--delete-delay] [--delete-after]
       [--delete-excluded] [--ignore-missing-args] [--delete-missing-args]
       [--ignore-errors] [--force] [--max-delete MAXDELETE]
       [--max-size MAXSIZE] [--min-size MINSIZE] [--partial]
       [--partial-dir PARTIALDIR] [--delay-updates] [-m] [--numeric-ids]
       [--usermap USERMAP] [--groupmap GROUPMAP] [--chown CHOWN]
       [--timeout TIMEOUT] [--contimeout CONTIMEOUT] [-I] [-M REMOTEOPTION]
       [--size-only] [--modify-window MODIFYWINDOW] [-T TEMPDIR] [-y]
       [--compare-dest COMPAREDEST] [--copy-dest COPYDEST]
       [--link-dest LINKDEST] [-z] [--compress-level COMPRESSLEVEL]
       [--skip-compress SKIPCOMPRESS] [-C] [-f FILTER] [--exclude EXCLUDE]
       [--exclude-from EXCLUDEFROM] [--include INCLUDE]
       [--include-from INCLUDEFROM] [--files-from FILESFROM] [-0] [-s]
       [--address ADDRESS] [--port PORT] [--sockopts SOCKOPTS]
       [--blocking-io] [--stats] [-8] [--human-readable] [--progress] [-i]
       [--out-format OUTFORMAT] [--log-file LOGFILE]
       [--log-file-format LOGFILEFORMAT] [--password-file PASSWORDFILE]
       [--list-only] [--bwlimit BWLIMIT] [--outbuf OUTBUF]
       [--write-batch WRITEBATCH] [--only-write-batch ONLYWRITEBATCH]
       [--read-batch READBATCH] [--protocol PROTOCOL] [--iconv ICONV]
       [--checkum-seed CHECKSUMSEED] [-4] [-6] [--version]
       [--additional ADDITIONAL] src dest
com.github.fracpete.rsync4j.RSync: error: too few arguments

Z:\users\desktop\a>java -jar rsync4j-all-3.1.2-12-spring-boot.jar Z:\users\desktop\a Z:\users\desktop\a\a
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries extractBinaries
information: Setting up rsync4j environment in 'C:\Users\hani\rsync4j'...
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries extractBinaries
information: Creating directory: C:\Users\hani\rsync4j\bin
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries extractBinaries
information: Creating directory: C:\Users\hani\rsync4j\home\hani\.ssh
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries extractBinaries
information: Copy your public key pairs into: C:\Users\hani\rsync4j\home\hani\.ssh
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/cygcom_err-2.dll' to 'C:\Users\hani\rsync4j\bin\cygcom_err-2.dll'
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/cygcrypto-1.0.0.dll' to 'C:\Users\hani\rsync4j\bin\cygcrypto-1.0.0.dll'
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/cyggcc_s-seh-1.dll' to 'C:\Users\hani\rsync4j\bin\cyggcc_s-seh-1.dll'
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/cyggssapi_krb5-2.dll' to 'C:\Users\hani\rsync4j\bin\cyggssapi_krb5-2.dll'
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/cygiconv-2.dll' to 'C:\Users\hani\rsync4j\bin\cygiconv-2.dll'
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/cygintl-8.dll' to 'C:\Users\hani\rsync4j\bin\cygintl-8.dll'
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/cygk5crypto-3.dll' to 'C:\Users\hani\rsync4j\bin\cygk5crypto-3.dll'
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/cygkrb5-3.dll' to 'C:\Users\hani\rsync4j\bin\cygkrb5-3.dll'
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/cygkrb5support-0.dll' to 'C:\Users\hani\rsync4j\bin\cygkrb5support-0.dll'
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/cygwin1.dll' to 'C:\Users\hani\rsync4j\bin\cygwin1.dll'
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/cygz.dll' to 'C:\Users\hani\rsync4j\bin\cygz.dll'
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/ssh.exe' to 'C:\Users\hani\rsync4j\bin\ssh.exe'
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/rsync.exe' to 'C:\Users\hani\rsync4j\bin\rsync.exe'
9 16, 2018 9:59:32 pm com.github.fracpete.rsync4j.core.Binaries copyResourceTo
information: Copying resource 'com/github/fracpete/rsync4j/windows-x86_64/ssh-keygen.exe' to 'C:\Users\hani\rsync4j\bin\ssh-keygen.exe'
skipping directory a

Z:\users\desktop\a>java -jar rsync4j-all-3.1.2-12-spring-boot.jar -av Z:\users\desktop\a Z:\users\desktop\a\a
sending incremental file list
a/
a/rsync4j-all-3.1.2-12-spring-boot.jar
a/a/

sent 9,556,407 bytes  received 47 bytes  19,112,908.00 bytes/sec
total size is 9,553,886  speedup is 1.00

Z:\users\desktop\a>

Appel en Java.

Veuillez écrire sur maven comme ça.

<dependency>
    <groupId>com.github.fracpete</groupId>
    <artifactId>rsync4j-all</artifactId>
    <version>3.1.2-12</version>
</dependency>

Exemple: aucun n'est asynchrone.

Options de réglage


 // rsync -av /backupmoto/  /backupsaki/ --delete  --exclude='nozokitai/'
        RSync rsync = new RSync()
                .source("/backupmoto/")
                .destination("/backupsaki/")
                .archive(true).verbose(true).delete(true).exclude("nozokitai/");
        CollectingProcessOutput output = null;
        try {
            output = rsync.execute();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(output.getStdOut());
        System.out.println("Exit code: " + output.getExitCode());
        if (output.getExitCode() > 0)
            System.err.println(output.getStdErr());

        ////

Lancer des options dans un tableau


        //rsync -av /backupmoto/  /backupsaki/ --delete  --exclude='nozokitai/'
        RSync rsync;
        try {
           rsync = new RSync();
           rsync.setOptions(new String[]{"-av", "/backupmoto/", "/backupsaki/", "--delete", "--exclude='nozokitai/"});
            CollectingProcessOutput output = rsync.execute();
            System.out.println(output.getStdOut());
            System.out.println("Exit code: " + output.getExitCode());
            if (output.getExitCode() > 0)
                System.err.println(output.getStdErr());
        } catch (Exception e) {
            e.printStackTrace();
        }

Résumé

Cela aurait été bien s'il avait été implémenté en java, mais je me demande si cela pourrait être sous la forme d'exécuter un binaire. Si je découvre quelque chose en fonctionnement réel, je voudrais le rendre.

Ref https://fracpete.github.io/rsync4j/windows/ http://www.atmarkit.co.jp/ait/articles/1702/02/news031.html

Recommended Posts

rsync4j --Je veux toucher rsync en Java.
Je souhaite envoyer un e-mail en Java.
Je veux faire quelque chose comme "cls" en Java
Je veux aussi utiliser ES2015 avec Java! → (´ ・ ω ・ `)
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
Je souhaite simplifier l'instruction if-else de la branche conditionnelle en Java
Je veux arrêter complètement les mises à jour Java
Je veux utiliser @Autowired dans Servlet
[Java] Je veux effectuer distinctement avec la clé dans l'objet
Exécuter R à partir de Java Je veux exécuter rJava
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (édition PowerMockito)
Je veux utiliser java8 forEach avec index
Je souhaite transmettre APP_HOME pour me connecter à Gradle
(Limité à Java 7 ou version ultérieure) Je souhaite que vous compariez des objets dans Objects.equals
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
Je souhaite obtenir l'adresse IP lors de la connexion au Wi-Fi avec Java
Je veux être finalement même à kotlin
Je veux écrire rapidement de java vers sqlite
Je veux ForEach un tableau avec une expression Lambda en Java
J'ai essayé de créer une compétence Alexa avec Java
[Java Spring MVC] Je souhaite utiliser DI dans ma propre classe
Je veux obtenir la valeur en Ruby
Même en Java, je veux sortir true avec un == 1 && a == 2 && a == 3 (deuxième décoction Javassist)
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (Black Magic)
Je souhaite également utiliser Combine dans UIKit.
Je souhaite utiliser les fonctions pratiques de Clojure dans Kotlin
[Java] Je souhaite calculer la différence par rapport à la date
Je veux intégrer n'importe quel TraceId dans le journal
J'ai essayé d'implémenter la notification push Firebase en Java
Je veux aussi utiliser des coquillages à Laradock! !!
# 2 [Note] J'ai essayé de calculer quatre-vingt-dix-neuf avec Java.
Je veux utiliser une petite icône dans Rails
J'ai essayé de créer une compétence Clova en Java
J'ai essayé de créer une fonction de connexion avec Java
Je souhaite définir une fonction dans la console Rails
Je veux faire des transitions d'écran avec kotlin et java!
Je veux arrêter les cas de serpent avec des définitions de table
Lorsque vous souhaitez remplacer dynamiquement l'annotation dans Java 8
Je veux cliquer sur une broche GoogleMap dans RSpec
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
~ J'ai essayé d'apprendre la programmation fonctionnelle avec Java maintenant ~
J'ai essayé de découvrir ce qui avait changé dans Java 9
Je veux convertir des caractères ...
J'ai fait une roulette à Java.
J'ai essayé la métaprogrammation avec Java
[Android Studio] Je souhaite définir des restrictions sur les valeurs enregistrées dans EditText [Java]
Je souhaite renvoyer un objet au format CSV avec en-tête et filtre multilignes en Java
# 1_JAVA Je veux obtenir le numéro d'index en spécifiant un caractère dans la chaîne de caractères
[Java] Je souhaite convertir un tableau d'octets en un nombre hexadécimal
Je veux trouver un chemin relatif dans une situation où Path est utilisé
Je souhaite créer une applet Java sans utiliser d'IDE
[Débutant] J'ai créé un programme pour vendre des gâteaux en Java
Je souhaite effectuer une factorisation prime rapide avec Ruby (ABC177E)
Je veux faire une liste avec kotlin et java!
Je voulais juste créer une propriété réactive en Java