ืฆืžืฆื ื’ื™ื‘ื•ื™ื™ื ื‘-99.5% ืขื hashget

hashget - ื–ื” ื‘ื—ื™ื ื, ืงื•ื“ ืคืชื•ื— ืžืกื™ืจ ื›ืคื™ืœื•ืช ื”ื•ื ื›ืœื™ ืขื–ืจ ื“ื•ืžื” ืœืืจื›ื™ื•ืŸ ื”ืžืืคืฉืจ ืœืš ืœื”ืงื˜ื™ืŸ ืžืฉืžืขื•ืชื™ืช ืืช ื’ื•ื“ืœ ื”ื’ื™ื‘ื•ื™ื™ื, ื›ืžื• ื’ื ืœืืจื’ืŸ ืกื›ื™ืžื•ืช ื’ื™ื‘ื•ื™ ืžืฆื˜ื‘ืจื•ืช ื•ื“ื™ืคืจื ืฆื™ืืœื™ื•ืช ื•ืขื•ื“.

ื–ื”ื• ืžืืžืจ ืกืงื™ืจื” ืœืชื™ืื•ืจ ื”ืชื›ื•ื ื•ืช. ื”ืฉื™ืžื•ืฉ ื‘ืคื•ืขืœ ื‘-hashget (ื“ื™ ืคืฉื•ื˜) ืžืชื•ืืจ ื‘ README ืคืจื•ื™ืงื˜ ื• ืชื™ืขื•ื“ ื•ื™ืงื™.

ื”ืฉื•ื•ืื”

ืœืคื™ ื—ื•ืง ื”ื–'ืื ืจ, ืื ื™ ืืชื—ื™ืœ ืžื™ื“ ืขื ื”ืชื›ื›ื™ื - ื‘ื”ืฉื•ื•ืื” ื‘ื™ืŸ ื”ืชื•ืฆืื•ืช:

ืžื“ื’ื ื ืชื•ื ื™ื
ื’ื•ื“ืœ ืœื ืืจื•ื–
.tar.gz
hashget.tar.gz

ื•ื•ืจื“ืคืจืก-5.1.1
43 Mb
11 ืžื’ื”-ื‘ื™ื˜ (26%)
155 Kb ( 0.3% )

ืœื™ื ื•ืงืก ืœื™ื‘ื”
934 Mb
161 ืžื’ื”-ื‘ื™ื˜ (20%)
4.7 ืžื’ื”-ื‘ื™ื˜ ( 0.5% )

Debian 9 (LAMP) LXC VM
724 Mb
165 ืžื’ื”-ื‘ื™ื˜ (23%)
4.1 ืžื’ื”-ื‘ื™ื˜ ( 0.5% )

ืจืงืข ืขืœ ืžื” ืฆืจื™ืš ืœื”ื™ื•ืช ื’ื™ื‘ื•ื™ ืื™ื“ื™ืืœื™ ื•ื™ืขื™ืœ

ื‘ื›ืœ ืคืขื ืฉืขืฉื™ืชื™ ื’ื™ื‘ื•ื™ ืฉืœ ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ื—ื“ืฉื” ืฉื ื•ืฆืจื”, ืจื“ืคื” ืื•ืชื™ ื”ืชื—ื•ืฉื” ืฉืื ื™ ืขื•ืฉื” ืžืฉื”ื• ืœื ื‘ืกื“ืจ. ืœืžื” ืื ื™ ืžืงื‘ืœ ื’ื™ื‘ื•ื™ ื›ื‘ื“ ืžื”ืžืขืจื›ืช, ืฉื‘ื” ื”ื™ืฆื™ืจืชื™ื•ืช ื”ื‘ืœืชื™ ื ืกื‘ืœืช ืฉืœื™ ื”ื™ื index.html ื‘ืฉื•ืจื” ืื—ืช ืขื ื”ื˜ืงืกื˜ "ืฉืœื•ื ืขื•ืœื"?

ืžื“ื•ืข ื™ืฉ โ€Ž16 MB /usr/sbin/mysqld ื‘ื’ื™ื‘ื•ื™ ืฉืœื™? ื”ืื ื‘ืืžืช ื™ื™ืชื›ืŸ ืฉื‘ืขื•ืœื ื”ื–ื” ื™ืฉ ืœื™ ื”ื›ื‘ื•ื“ ืœืฉืžื•ืจ ืขืœ ื”ืชื™ืง ื”ื—ืฉื•ื‘ ื”ื–ื”, ื•ืื ืื›ืฉืœ, ื”ื•ื ื™ืื‘ื“ ืœืื ื•ืฉื•ืช? ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉืœื. ื”ื•ื ืžืื•ื—ืกืŸ ื‘ืฉืจืชื™ ื“ื‘ื™ืืŸ ืืžื™ื ื™ื ื‘ืžื™ื•ื—ื“ (ืื™ ืืคืฉืจ ืœื”ืฉื•ื•ืช ืืช ื”ืžื”ื™ืžื ื•ืช ื•ื”ืจืฆื™ืคื•ืช ืฉืœื”ื ืœืžื” ืฉืื ื™ ื™ื›ื•ืœ ืœืกืคืง), ื›ืžื• ื’ื ื‘ื’ื™ื‘ื•ื™ื™ื (ืžื™ืœื™ื•ื ื™ื ืžื”ื) ืฉืœ ืžื ื”ืœื™ื ืื—ืจื™ื. ื”ืื ืื ื—ื ื• ื‘ืืžืช ืฆืจื™ื›ื™ื ืœื™ืฆื•ืจ 10+ ืขื•ืชืง ืจืืฉื•ืŸ ืฉืœ ืงื•ื‘ืฅ ื—ืฉื•ื‘ ื–ื” ื›ื“ื™ ืœืฉืคืจ ืืช ื”ืืžื™ื ื•ืช?

ื‘ื“ืจืš ื›ืœืœ hashget ื•ืคื•ืชืจ ืืช ื”ื‘ืขื™ื” ื”ื–ื•. ื›ืืฉืจ ื”ื•ื ืืจื•ื–, ื”ื•ื ื™ื•ืฆืจ ื’ื™ื‘ื•ื™ ืงื˜ืŸ ืžืื•ื“. ื‘ืขืช ืคื™ืจื•ืง - ืžืขืจื›ืช ืœื ืืจื•ื–ื” ืœื—ืœื•ื˜ื™ืŸ, ื‘ื“ื•ืžื” ืœืžื” ืฉื”ื™ืชื” ืื tar -c / tar -x. (ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ื–ื•ื”ื™ ืืจื™ื–ื” ืœืœื ืื•ื‘ื“ืŸ)

ืื™ืš ื”ื”ืืฉื’ื˜ ืขื•ื‘ื“

ืœ-hashget ื™ืฉ ืืช ื”ืžื•ืฉื’ื™ื ืฉืœ Package ื•- HashPackage, ื‘ืขื–ืจืชื ื”ื™ื ืžื‘ืฆืขืช ืžื ื™ืขืช ื›ืคื™ืœื•ื™ื•ืช.

ื—ึฒื‘ึดื™ืœึธื” (ืฉืงื™ืช ืคืœืกื˜ื™ืง). ืงื•ื‘ืฅ (ื‘ื“ืจืš ื›ืœืœ ืืจื›ื™ื•ืŸ .deb ืื• .tar.gz) ื”ื ื™ืชืŸ ืœื”ื•ืจื“ื” ืžืื•ื‘ื˜ื—ืช ืžื”ืื™ื ื˜ืจื ื˜, ื•ืžืžื ื• ื ื™ืชืŸ ืœื”ืฉื™ื’ ืงื•ื‘ืฅ ืื—ื“ ืื• ื™ื•ืชืจ.

HashPackage - ืงื•ื‘ืฅ JSON ืงื˜ืŸ ื”ืžื™ื™ืฆื’ ื—ื‘ื™ืœื”, ื›ื•ืœืœ ื›ืชื•ื‘ืช URL ืฉืœ ื”ื—ื‘ื™ืœื” ื•ืกื›ื•ืžื™ hash (sha256) ืฉืœ ืงื‘ืฆื™ื ืžืžื ื”. ืœื“ื•ื’ืžื”, ืขื‘ื•ืจ ื—ื‘ื™ืœืช mariadb-server-core ืฉืœ 5 ืžื’ื”-ื‘ื™ื™ื˜, ื’ื•ื“ืœ ื”-hashpack ื”ื•ื 6 ืงื™ืœื•ื‘ื™ื™ื˜ ื‘ืœื‘ื“. ื‘ืขืจืš ืคื™ ืืœืฃ ืคื—ื•ืช.

ืžื ื™ืขืช ื›ืคื™ืœื•ืช - ื™ืฆื™ืจืช ืืจื›ื™ื•ืŸ ืœืœื ืงื‘ืฆื™ื ื›ืคื•ืœื™ื (ืื ื”-deduplicator ื™ื•ื“ืข ื”ื™ื›ืŸ ื ื™ืชืŸ ืœื”ื•ืจื™ื“ ืืช ื”ื—ื‘ื™ืœื” ื”ืžืงื•ืจื™ืช, ื–ื” ืžืคื—ื™ืช ื›ืคื™ืœื•ื™ื•ืช ืžื”ืืจื›ื™ื•ืŸ).

ืืจื™ื–ื”

ื‘ืขืช ื”ืืจื™ื–ื”, ื›ืœ ื”ืงื‘ืฆื™ื ืžื”ืกืคืจื™ื™ื” ื”ื ืืจื–ื™ื ื ืกืจืงื™ื, ืกื›ื•ืžื™ ื”ื’ื™ื‘ื•ื‘ ืฉืœื”ื ืžื—ื•ืฉื‘ื™ื, ื•ืื ื”ืกื›ื•ื ื ืžืฆื ื‘ืื—ื“ ืžื”-HashPackages ื”ืžื•ื›ืจื™ื, ื ืฉืžืจื™ื ืžื˜ื ื ืชื•ื ื™ื ืขืœ ื”ืงื•ื‘ืฅ (ืฉื, hash, ื–ื›ื•ื™ื•ืช ื’ื™ืฉื” ื•ื›ื•'). ื‘ืงื•ื‘ืฅ ืžื™ื•ื—ื“ .hashget-restore.json, ืฉื™ื™ื›ืœืœ ื’ื ื”ื•ื ื‘ืืจื›ื™ื•ืŸ.

ื‘ืžืงืจื” ื”ืคืฉื•ื˜ ื‘ื™ื•ืชืจ, ื”ืืจื™ื–ื” ืขืฆืžื” ื ืจืื™ืช ืœื ื™ื•ืชืจ ืžืกื•ื‘ื›ืช ืžื–ื•ืคืช:

hashget -zf /tmp/mybackup.tar.gz --pack /path/to/data

ืคื•ืจืงื™ื

ื”ืคืจื™ืงื” ืžืชื‘ืฆืขืช ื‘ืฉื ื™ ืฉืœื‘ื™ื. ืจืืฉื™ืช ืคืจื™ืงืช ื”ื–ืคืช ื”ืจื’ื™ืœื”:

tar -xf mybackup.tar.gz -C /path/to/data

ืœืื—ืจ ืžื›ืŸ ืฉื—ื–ืจ ืžื”ืจืฉืช:

hashget -u /path/to/data

ื‘ืขืช ื”ืฉื—ื–ื•ืจ, hashget ืงื•ืจื ืืช ื”ืงื•ื‘ืฅ .hashget-restore.json, ืžื•ืจื™ื“ ืืช ื”ื—ื‘ื™ืœื•ืช ื”ื“ืจื•ืฉื•ืช, ืคื•ืจืง ืื•ืชืŸ ื•ืžื—ืœืฅ ืืช ื”ืงื‘ืฆื™ื ื”ื“ืจื•ืฉื™ื, ืžืชืงื™ืŸ ืื•ืชื ื‘ื ืชื™ื‘ื™ื ื”ื ื“ืจืฉื™ื, ืขื ื”ื‘ืขืœื™ื/ื”ืงื‘ื•ืฆื”/ื”ื”ืจืฉืื•ืช ื”ื ื“ืจืฉื•ืช.

ื“ื‘ืจื™ื ื™ื•ืชืจ ืงืฉื™ื

ืžื” ืฉืชื•ืืจ ืœืขื™ืœ ื›ื‘ืจ ืžืกืคื™ืง ืœืžื™ ืฉ"ืจื•ืฆื” ืืช ื–ื” ื›ืžื• ื–ืคืช, ืื‘ืœ ืœืืจื•ื– ืืช ื”ื“ื‘ื™ืืŸ ืฉืœื™ ืœ-4 ืžื’ื” ื‘ื™ื™ื˜." ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื“ื‘ืจื™ื ืžื•ืจื›ื‘ื™ื ื™ื•ืชืจ ืžืื•ื—ืจ ื™ื•ืชืจ.

ืื™ื ื“ืงืก

ืื ืœ-hashget ืœื ื”ื™ื” ื—ื‘ื™ืœืช HashPackage ืื—ืช, ืื– ื”ื™ื ืคืฉื•ื˜ ืœื ื”ื™ื™ืชื” ืžืกื•ื’ืœืช ืœื‘ื˜ืœ ื›ืคื™ืœื•ืช ืฉืœ ื“ื‘ืจ.

ืืชื” ื™ื›ื•ืœ ื’ื ืœื™ืฆื•ืจ HashPackage ื‘ืื•ืคืŸ ื™ื“ื ื™ (ืคืฉื•ื˜: hashget --submit https://wordpress.org/wordpress-5.1.1.zip -p my), ืื‘ืœ ื™ืฉ ื“ืจืš ื ื•ื—ื” ื™ื•ืชืจ.

ืขืœ ืžื ืช ืœืงื‘ืœ ืืช ื”-hashpackage ื”ื“ืจื•ืฉ, ื™ืฉ ืฉืœื‘ ืื™ื ื“ืงืก (ื–ื” ืžื‘ื•ืฆืข ืื•ื˜ื•ืžื˜ื™ืช ืขื ื”ืคืงื•ื“ื” --pack) ื• ื”ื™ื•ืจื™ืกื˜ื™ืงื”. ื‘ืขืช ื™ืฆื™ืจืช ืื™ื ื“ืงืก, hashget "ืžื–ื™ืŸ" ื›ืœ ืงื•ื‘ืฅ ืฉื ืžืฆื ืœื›ืœ ื”ื™ื•ืจื™ืกื˜ื™ื•ืช ื”ื–ืžื™ื ื•ืช ืฉืžืชืขื ื™ื™ื ื•ืช ื‘ื•. ืœืื—ืจ ืžื›ืŸ, Heuristics ื™ื›ื•ืœื” ืœื”ื•ืกื™ืฃ ื›ืœ ื—ื‘ื™ืœื” ืœืื™ื ื“ืงืก ื›ื“ื™ ืœื™ืฆื•ืจ HashPackage.

ืœื“ื•ื’ืžื”, ื”ื™ื•ืจื™ืกื˜ื™ืงื” ืฉืœ ื“ื‘ื™ืืŸ ืื•ื”ื‘ืช ืืช ื”ืงื•ื‘ืฅ /var/lib/dpkg/status ื•ืžื–ื”ื” ื—ื‘ื™ืœื•ืช ื“ื‘ื™ืืŸ ืžื•ืชืงื ื•ืช, ื•ืื ื”ืŸ ืœื ื ื•ืกืคื• ืœืื™ื ื“ืงืก (ืœื ื ื•ืฆืจ ืขื‘ื•ืจืŸ HashPackage), ืžื•ืจื™ื“ ื•ืžื•ืกื™ืฃ ืื•ืชืŸ ืœืื™ื ื“ืงืก. ื”ืชื•ืฆืื” ื”ื™ื ืืคืงื˜ ื ื—ืžื“ ืžืื•ื“ - hashget ืชืžื™ื“ ื™ืฉื›ืคืœ ื‘ื™ืขื™ืœื•ืช ืืช ืžืขืจื›ืช ื”ื”ืคืขืœื” ืฉืœ ื“ื‘ื™ืืŸ, ื’ื ืื ื™ืฉ ืœื”ืŸ ืืช ื”ื—ื‘ื™ืœื•ืช ื”ืขื“ื›ื ื™ื•ืช ื‘ื™ื•ืชืจ.

ืงื‘ืฆื™ ืจืžื–

ืื ื”ืจืฉืช ืฉืœืš ืžืฉืชืžืฉืช ื‘ื—ืœืง ืžื”ื—ื‘ื™ืœื•ืช ื”ืงื ื™ื™ื ื™ื•ืช ืฉืœืš ืื• ื‘ื—ื‘ื™ืœื” ืฆื™ื‘ื•ืจื™ืช ืฉืื™ื ื” ื›ืœื•ืœื” ื‘ื”ื™ื•ืจื™ืกื˜ื™ืงื” ืฉืœ hashget, ืชื•ื›ืœ ืœื”ื•ืกื™ืฃ ืœื” ืงื•ื‘ืฅ ืจืžื– ืคืฉื•ื˜ ืฉืœ hashget-hint.json ื›ืš:

{
    "project": "wordpress.org",
    "url": "https://ru.wordpress.org/wordpress-5.1.1-ru_RU.zip"
}

ืœืื—ืจ ืžื›ืŸ, ื‘ื›ืœ ืคืขื ืฉื ื•ืฆืจ ืืจื›ื™ื•ืŸ, ื”ื—ื‘ื™ืœื” ืชืชื•ื•ืกืฃ ืœืื™ื ื“ืงืก (ืื ื”ื™ื ืœื ื”ื™ื™ืชื” ื‘ืขื‘ืจ), ื•ืงื•ื‘ืฆื™ ื”ื—ื‘ื™ืœื” ื™ืคื•ืงื• ืžื”ืืจื›ื™ื•ืŸ. ืื™ืŸ ืฆื•ืจืš ื‘ืชื›ื ื•ืช, ื”ื›ืœ ื ื™ืชืŸ ืœืขืฉื•ืช ืž-vim ื•ืœืฉืžื•ืจ ื‘ื›ืœ ื’ื™ื‘ื•ื™. ืฉื™ืžื• ืœื‘ ืฉื‘ื–ื›ื•ืช ื’ื™ืฉืช ื”-hash sum, ืื ื—ืœืง ืžื”ืงื‘ืฆื™ื ืžื”ื—ื‘ื™ืœื” ื™ืฉืชื ื• ื‘ืื•ืคืŸ ืžืงื•ืžื™ (ืœื“ื•ื’ืžื”, ืงื•ื‘ืฅ ืชืฆื•ืจื” ื™ืฉืชื ื”), ืื– ื”ืงื‘ืฆื™ื ืฉื”ืฉืชื ื• ื™ื™ืฉืžืจื• ื‘ืืจื›ื™ื•ืŸ "ื›ืžื•ืช ืฉื”ื" ื•ืœื ื™ื—ืชื›ื•.

ืื ื—ืœืง ืžื”ื—ื‘ื™ืœื•ืช ืฉืœืš ืžืชืขื“ื›ื ื•ืช ืžืขืช ืœืขืช, ืืš ื”ืฉื™ื ื•ื™ื™ื ืื™ื ื ื’ื“ื•ืœื™ื ื‘ืžื™ื•ื—ื“, ืชื•ื›ืœ ืœืจืžื•ื– ืจืง ืขื‘ื•ืจ ื’ืจืกืื•ืช ืขื™ืงืจื™ื•ืช. ืœื“ื•ื’ืžื”, ื‘ื’ืจืกื” 1.0 ื”ื ืขืฉื• ืจืžื– ืฉืžืฆื‘ื™ืข ืขืœ mypackage-1.0.tar.gz, ื•ื”ื•ื ื™ื‘ื•ื˜ืœ ืœื—ืœื•ื˜ื™ืŸ, ื•ืื– ื”ื•ืฆื™ืื• ืืช ื’ืจืกื” 1.1, ืฉื”ื™ื ืžืขื˜ ืฉื•ื ื”, ืื‘ืœ ื”ืจืžื– ืœื ืขื•ื“ื›ืŸ. ื–ื” ื‘ืกื“ืจ. ืจืง ืงื‘ืฆื™ื ื”ืชื•ืืžื™ื (ื ื™ืชืŸ ืœืฉื—ื–ืจ) ื’ืจืกื” 1.0 ื ืžื—ืงื™ื.

ื”ื”ื™ื•ืจื™ืกื˜ื™ืงื” ืฉืžืขื‘ื“ืช ืืช ืงื•ื‘ืฅ ื”ืจืžื– ื”ื™ื ื“ื•ื’ืžื” ื˜ื•ื‘ื” ืœื”ื‘ื ืช ื”ืžื ื’ื ื•ืŸ ื”ืคื ื™ืžื™ ืฉืœ ืื•ืคืŸ ืคืขื•ืœืช ื”ื™ื•ืจื™ืกื˜ื™ืงื”. ื”ื•ื ืžืขื‘ื“ ืจืง ืงื‘ืฆื™ hashget-hint.json (ืื• .hashget-hint.json ืขื ื ืงื•ื“ื”) ื•ืžืชืขืœื ืžื›ืœ ื”ืฉืืจ. ืžืชื•ืš ืงื•ื‘ืฅ ื–ื”, ื”ื•ื ืงื•ื‘ืข ืื™ื–ื• ื›ืชื•ื‘ืช ืืชืจ ืœื—ื‘ื™ืœื” ื™ืฉ ืœื”ื•ืกื™ืฃ ืœืื™ื ื“ืงืก, ื•ื”-hashget ืžื•ืกื™ืฃ ืื•ืชื” ืœืื™ื ื“ืงืก (ืื ื”ื•ื ืขื“ื™ื™ืŸ ืœื ืขืฉื” ื–ืืช)

HashServer

ื–ื” ื™ื”ื™ื” ื“ื™ ืขืชื™ืจ ืขื‘ื•ื“ื” ืœื‘ืฆืข ืื™ื ื“ืงืก ืžืœื ื‘ืขืช ื™ืฆื™ืจืช ื’ื™ื‘ื•ื™ื™ื. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืขืœื™ืš ืœื”ื•ืจื™ื“ ื›ืœ ื—ื‘ื™ืœื”, ืœืคืจื•ืง ืื•ืชื” ื•ืœื”ื•ืกื™ืฃ ืื•ืชื” ืœืื™ื ื“ืงืก. ืœื›ืŸ hashget ืžืฉืชืžืฉ ื‘ืกื›ื™ืžื” ืขื HashServer. ื›ืืฉืจ ืžื–ื•ื”ื” ื—ื‘ื™ืœืช ื“ื‘ื™ืืŸ ืžื•ืชืงื ืช, ืื ื”ื™ื ืœื ื ืžืฆืืช ื‘-HashPackage ื”ืžืงื•ืžื™, ื ืขืฉื” ืชื—ื™ืœื” ื ื™ืกื™ื•ืŸ ืคืฉื•ื˜ ืœื”ื•ืจื™ื“ ืืช ื”-HashPackage ืžืฉืจืช ื”-hash. ื•ืจืง ืื ื–ื” ืœื ืขื•ื‘ื“, ื”-hashget ืขืฆืžื• ืžื•ืจื™ื“ ื•ืžืืฉื™ื ืืช ื”ื—ื‘ื™ืœื” (ื•ืžืขืœื” ืื•ืชื” ืœ-hashserver, ื›ืš ืฉื”-hashserver ื™ืกืคืง ืื•ืชื” ื‘ืขืชื™ื“).

HashServer ื”ื•ื ืžืจื›ื™ื‘ ืื•ืคืฆื™ื•ื ืœื™ ืฉืœ ื”ืกื›ื™ืžื”, ืœื ืงืจื™ื˜ื™, ื”ื•ื ืžืฉืžืฉ ืืš ื•ืจืง ื›ื“ื™ ืœื”ืื™ืฅ ื•ืœื”ืคื—ื™ืช ืืช ื”ืขื•ืžืก ืขืœ ื”ืžืื’ืจื™ื. ืžื•ืฉื‘ืช ื‘ืงืœื•ืช (ืื•ืคืฆื™ื•ื ืœื™ --hashserver ืœืœื ืคืจืžื˜ืจื™ื). ื‘ื ื•ืกืฃ, ืืชื” ื™ื›ื•ืœ ื‘ืงืœื•ืช ืฆื•ืจ ืฉืจืช hash ืžืฉืœืš.

ื’ื™ื‘ื•ื™ื™ื ืžืฆื˜ื‘ืจื™ื ื•ื“ื™ืคืจื ืฆื™ืืœื™ื™ื, ื”ืชื™ื™ืฉื ื•ืช ืžืชื•ื›ื ื ืช

hashget ืžืงืœ ืžืื•ื“ ืขืœ ื™ืฆื™ืจืช ื“ื™ืื’ืจืžื” ื’ื™ื‘ื•ื™ื™ื ืžืฆื˜ื‘ืจื™ื ื•ื“ื™ืคืจื ืฆื™ืืœื™ื™ื. ืœืžื” ืฉืœื ื ื•ืกื™ืฃ ืืช ื”ื’ื™ื‘ื•ื™ ืฉืœื ื• ืœืื™ื ื“ืงืก (ืขื ื›ืœ ื”ืงื‘ืฆื™ื ื”ื™ื™ื—ื•ื“ื™ื™ื ืฉืœื ื•)? ืฆื•ื•ืช ืื—ื“ --submit ื•ืกื™ื™ืžืช! ื”ื’ื™ื‘ื•ื™ ื”ื‘ื ืฉ-hashget ื™ื•ืฆืจ ืœื ื™ื›ืœื•ืœ ืงื‘ืฆื™ื ืžื”ืืจื›ื™ื•ืŸ ื”ื–ื”.

ืื‘ืœ ื–ื• ืœื ื’ื™ืฉื” ื˜ื•ื‘ื” ื‘ืžื™ื•ื—ื“, ื›ื™ ืื•ืœื™ ื™ืชื‘ืจืจ ืฉื‘ืขืช ื”ืฉื—ื–ื•ืจ ื ืฆื˜ืจืš ืœืžืฉื•ืš ืืช ื›ืœ ื’ื™ื‘ื•ื™ื™ ื”ื”ืืฉื’ื˜ื™ื ื‘ื›ืœ ื”ื”ื™ืกื˜ื•ืจื™ื” (ืื ื›ืœ ืื—ื“ ืžื›ื™ืœ ืœืคื—ื•ืช ืงื•ื‘ืฅ ื™ื™ื—ื•ื“ื™ ืื—ื“). ื™ืฉ ืžื ื’ื ื•ืŸ ืœื–ื” ื”ืชื™ื™ืฉื ื•ืช ืžืชื•ื›ื ื ืช ืฉืœ ื’ื™ื‘ื•ื™ื™ื. ื‘ืขืช ื™ืฆื™ืจืช ืื™ื ื“ืงืก, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ืืช ืชืืจื™ืš ื”ืชืคื•ื’ื” ืฉืœ HashPackage --expires 2019-06-01, ื•ืœืื—ืจ ืชืืจื™ืš ื–ื” (ืžืฉืขื” 00:00), ืœื ื™ื™ืขืฉื” ื‘ื• ืฉื™ืžื•ืฉ. ืœื ื ื™ืชืŸ ืœืžื—ื•ืง ืืช ื”ืืจื›ื™ื•ืŸ ืขืฆืžื• ืœืื—ืจ ืชืืจื™ืš ื–ื” (ืื ื›ื™ hashget ื™ื›ื•ืœ ืœื”ืฆื™ื’ ื‘ื ื•ื—ื•ืช ืืช ื›ืชื•ื‘ื•ืช ื”-URL ืฉืœ ื›ืœ ื”ื’ื™ื‘ื•ื™ื™ื ืฉื”ื/ื™ื”ื™ื• ืจืงื•ื‘ื™ื ื›ืจื’ืข ืื• ื‘ื›ืœ ืชืืจื™ืš).

ืœื“ื•ื’ืžื”, ืื ื ื‘ืฆืข ื’ื™ื‘ื•ื™ ืžืœื ื‘-1 ื•ื ื•ืกื™ืฃ ืื•ืชื• ืœืื™ื ื“ืงืก ืœื›ืœ ื”ื—ื™ื™ื ืขื“ ืกื•ืฃ ื”ื—ื•ื“ืฉ, ื ืงื‘ืœ ืกื›ื™ืžืช ื’ื™ื‘ื•ื™ ื“ื™ืคืจื ืฆื™ืืœื™ืช.

ืื ื ื•ืกื™ืฃ ืœืื™ื ื“ืงืก ื’ื™ื‘ื•ื™ื™ื ื—ื“ืฉื™ื ื‘ืื•ืชื• ืื•ืคืŸ, ืชื”ื™ื” ืชื›ื ื™ืช ืฉืœ ื’ื™ื‘ื•ื™ื™ื ืžืฆื˜ื‘ืจื™ื.

ืฉืœื ื›ืžื• ืกื›ื™ืžื•ืช ืžืกื•ืจืชื™ื•ืช, hashget ืžืืคืฉืจ ืœืš ืœื”ืฉืชืžืฉ ื‘ืžืกืคืจ ืžืงื•ืจื•ืช ื‘ืกื™ืกื™ื™ื. ื”ื’ื™ื‘ื•ื™ ื™ืงื˜ืŸ ื”ืŸ ืขืœ ื™ื“ื™ ืฆืžืฆื•ื ืงื‘ืฆื™ื ืžื’ื™ื‘ื•ื™ื™ื ืงื•ื“ืžื™ื (ืื ื™ืฉ) ื•ื”ืŸ ืขืœ ื™ื“ื™ ืงื‘ืฆื™ื ืฆื™ื‘ื•ืจื™ื™ื (ืžื” ืฉื ื™ืชืŸ ืœื”ื•ืจื™ื“).

ืื ืžืกื™ื‘ื” ื›ืœืฉื”ื™ ืื™ื ื ื• ืกื•ืžื›ื™ื ืขืœ ื”ืžื”ื™ืžื ื•ืช ืฉืœ ืžืฉืื‘ื™ ื“ื‘ื™ืืŸ (https://snapshot.debian.org/) ืื• ืžืฉืชืžืฉ ื‘ื”ืคืฆื” ืื—ืจืช, ืื ื—ื ื• ื™ื›ื•ืœื™ื ืคืฉื•ื˜ ืœื‘ืฆืข ื’ื™ื‘ื•ื™ ืžืœื ืคืขื ืื—ืช ืขื ื›ืœ ื”ื—ื‘ื™ืœื•ืช, ื•ืื– ืœื”ืกืชืžืš ืขืœ ื–ื” (ืขืœ ื™ื“ื™ ื”ืฉื‘ืชืช ื”ื™ื•ืจื™ืกื˜ื™ืงื”). ื›ืขืช, ืื ื›ืœ ื”ืฉืจืชื™ื ืฉืœ ื”ื”ืคืฆื•ืช ืฉืœื ื• ื™ืชื‘ืจืจื• ื›ืœื ื–ืžื™ื ื™ื ืขื‘ื•ืจื ื• (ื‘ืื™ื ื˜ืจื ื˜ ืœืžื–ื›ืจื•ืช ืื• ื‘ืžื”ืœืš ืืคื•ืงืœื™ืคืกืช ื–ื•ืžื‘ื™ื), ืื‘ืœ ื”ื’ื™ื‘ื•ื™ื™ื ืฉืœื ื• ืชืงื™ื ื™ื, ื ื•ื›ืœ ืœืฉื—ื–ืจ ืžื›ืœ ื’ื™ื‘ื•ื™ ื”ื‘ื“ืœ ืงืฆืจ ื”ืžืกืชืžืš ืจืง ืขืœ ื”ื’ื™ื‘ื•ื™ื™ื ื”ืงื•ื“ืžื™ื ืฉืœื ื• .

Hashget ืžืกืชืžืš ืจืง ืขืœ ืžืงื•ืจื•ืช ืฉื—ื–ื•ืจ ืžื”ื™ืžื ื™ื ืœืคื™ ืฉื™ืงื•ืœ ื“ืขืชืš. ืืœื” ืฉืืชื” ืžื—ืฉื™ื‘ ืืžื™ื ื™ื ื™ืฉืžืฉื•.

FilePool ื•ืงืจื—ื•ืŸ

ืžื ื’ื ื•ืŸ FilePool ืžืืคืฉืจ ืœืš ืœื ืœื™ืฆื•ืจ ืงืฉืจ ื›ืœ ื”ื–ืžืŸ ืขื ืฉืจืชื™ื ื—ื™ืฆื•ื ื™ื™ื ื›ื“ื™ ืœื”ื•ืจื™ื“ ื—ื‘ื™ืœื•ืช, ืืœื ืœื”ืฉืชืžืฉ ื‘ื—ื‘ื™ืœื•ืช ืžืžื“ืจื™ืš ืžืงื•ืžื™ ืื• ืžืฉืจืช ืืจื’ื•ื ื™, ืœืžืฉืœ:

$ hashget -u . --pool /tmp/pool

ืื•

$ hashget -u . --pool http://myhashdb.example.com/

ื›ื“ื™ ืœื™ืฆื•ืจ ืžืื’ืจ ื‘ืกืคืจื™ื™ื” ืžืงื•ืžื™ืช, ืืชื” ืจืง ืฆืจื™ืš ืœื™ืฆื•ืจ ืกืคืจื™ื™ื” ื•ืœื–ืจื•ืง ืœืชื•ื›ื” ืงื‘ืฆื™ื, ื”-hashget ืขืฆืžื• ื™ืžืฆื ืืช ืžื” ืฉื”ื•ื ืฆืจื™ืš ื‘ืืžืฆืขื•ืช ื”-hash. ื›ื“ื™ ืœื”ื ื’ื™ืฉ ืืช ื”ืžืื’ืจ ื‘ืืžืฆืขื•ืช HTTP, ืขืœื™ืš ืœื™ืฆื•ืจ ืกื™ืžืœื™ื ืงื™ื ื‘ืฆื•ืจื” ืžื™ื•ื—ื“ืช; ื–ื” ื ืขืฉื” ื‘ืคืงื•ื“ื” ืื—ืช (hashget-admin --build /var/www/html/hashdb/ --pool /tmp/pool). HTTP FilePool ืขืฆืžื• ื”ื•ื ืงื‘ืฆื™ื ืกื˜ื˜ื™ื™ื, ื›ืš ืฉื›ืœ ืฉืจืช ืื™ื ื˜ืจื ื˜ ืคืฉื•ื˜ ื™ื›ื•ืœ ืœืฉืจืช ืื•ืชื•, ื”ืขื•ืžืก ืขืœ ื”ืฉืจืช ื”ื•ื ื›ืžืขื˜ ืืคืก.

ื”ื•ื“ื•ืช ืœ-FilePool, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ืœื ืจืง ื‘ืžืฉืื‘ื™ http(s) ื›ืžืฉืื‘ื™ ื‘ืกื™ืก, ืืœื ื’ื ืœื“ื•ื’ืžื”,ืงืจื—ื•ืŸ ืืžื–ื•ืŸ.

ืœืื—ืจ ื”ืขืœืืช ื”ื’ื™ื‘ื•ื™ ืœืงืจื—ื•ืŸ, ืื ื• ืžืงื‘ืœื™ื ืืช ืžื–ื”ื” ื”ื”ืขืœืื” ืฉืœื• ื•ืžืฉืชืžืฉื™ื ื‘ื• ื›ื›ืชื•ื‘ืช URL. ืœื“ื•ื’ืžื”:

hashget --submit Glacier_Upload_ID --file /tmp/my-glacier-backup.tar.gz --project glacier --hashserver --expires 2019-09-01

ื›ืขืช ื’ื™ื‘ื•ื™ื™ื ื—ื“ืฉื™ื (ื“ื™ืคืจื ืฆื™ืืœื™ื™ื) ื™ืชื‘ืกืกื• ืขืœ ื’ื™ื‘ื•ื™ ื–ื” ื•ื™ื”ื™ื• ืงืฆืจื™ื ื™ื•ืชืจ. ืœืื—ืจ ืคืจื™ืงืช ื”-diffbackup, ื ื•ื›ืœ ืœืจืื•ืช ืขืœ ืื™ืœื• ืžืฉืื‘ื™ื ื”ื•ื ืžืกืชืžืš:

hashget --info /tmp/unpacked/ list

ื•ืคืฉื•ื˜ ื”ืฉืชืžืฉ ื‘ืกืงืจื™ืคื˜ ืžืขื˜ืคืช ื›ื“ื™ ืœื”ื•ืจื™ื“ ืืช ื›ืœ ื”ืงื‘ืฆื™ื ื”ืืœื” ืž-Glacier ืœื‘ืจื™ื›ื” ื•ืœื”ืคืขื™ืœ ืืช ื”ืฉื—ื–ื•ืจ ื”ืจื’ื™ืœ: hashget -u /tmp/unpacked โ€”pool /tmp/pool

ื”ืื ื”ืžืฉื—ืง ืฉื•ื•ื” ืืช ื”ื ืจ?

ื‘ืžืงืจื” ื”ืคืฉื•ื˜ ื‘ื™ื•ืชืจ, ืคืฉื•ื˜ ืชืฉืœืžื• ืคื—ื•ืช ืขื‘ื•ืจ ื’ื™ื‘ื•ื™ื™ื (ืื ืชืื—ืกื ื• ืื•ืชื ืื™ืคืฉื”ื• ื‘ืขื ืŸ ืชืžื•ืจืช ื›ืกืฃ). ืื•ืœื™ ื”ืจื‘ื” ื”ืจื‘ื” ืคื—ื•ืช.

ืื‘ืœ ื–ื” ืœื ื”ื“ื‘ืจ ื”ื™ื—ื™ื“. ื›ืžื•ืช ื”ื•ืคื›ืช ืœืื™ื›ื•ืช. ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ื–ื” ื›ื“ื™ ืœืงื‘ืœ ืฉื“ืจื•ื’ ื‘ืื™ื›ื•ืช ื’ื‘ื•ื”ื” ืœืกื›ื™ืžืช ื”ื’ื™ื‘ื•ื™ ืฉืœืš. ืœื“ื•ื’ืžื”, ืžื›ื™ื•ื•ืŸ ืฉื”ื’ื™ื‘ื•ื™ื™ื ืฉืœื ื• ื›ืขืช ืงืฆืจื™ื ื™ื•ืชืจ, ืื ื• ื™ื›ื•ืœื™ื ืœื‘ืฆืข ื’ื™ื‘ื•ื™ื™ื ืœื ื—ื•ื“ืฉื™ื™ื, ืืœื ื™ื•ืžื™ื™ื. ืื—ืกืŸ ืื•ืชื ืœื ื‘ืžืฉืš ืฉื™ืฉื” ื—ื•ื“ืฉื™ื, ื›ืžื• ืงื•ื“ื, ืืœื ื‘ืžืฉืš 5 ืฉื ื™ื. ื‘ืขื‘ืจ ืื—ืกื ืชื ืื•ืชื• ื‘ืื—ืกื•ืŸ "ืงืจ" ืื™ื˜ื™ ืืš ื–ื•ืœ (Glacier), ื›ืขืช ืชื•ื›ืœื• ืœืื—ืกืŸ ืื•ืชื• ื‘ืื—ืกื•ืŸ ื—ื, ืžืฉื ืชืžื™ื“ ืชื•ื›ืœื• ืœื”ื•ืจื™ื“ ื‘ืžื”ื™ืจื•ืช ื’ื™ื‘ื•ื™ ื•ืœืฉื—ื–ืจ ืื•ืชื• ืชื•ืš ื“ืงื•ืช, ืœื ื‘ื™ื•ื.

ืืชื” ื™ื›ื•ืœ ืœื”ื’ื‘ื™ืจ ืืช ื”ืืžื™ื ื•ืช ืฉืœ ืื—ืกื•ืŸ ื’ื™ื‘ื•ื™. ืื ืื ื• ืžืื—ืกื ื™ื ืื•ืชื ื›ื™ื•ื ื‘ืžืชืงืŸ ืื—ืกื•ืŸ ืื—ื“, ืื– ืขืœ ื™ื“ื™ ืฆืžืฆื•ื ื ืคื— ื”ื’ื™ื‘ื•ื™ื™ื, ื ื•ื›ืœ ืœืื—ืกืŸ ืื•ืชื ื‘-2-3 ืžืชืงื ื™ ืื—ืกื•ืŸ ื•ืœืฉืจื•ื“ ืœืœื ื›ืื‘ ืื ืื—ื“ ืžื”ื ื™ื™ืคื’ืข.

ืื™ืš ืœื ืกื•ืช ื•ืœื”ืชื—ื™ืœ ืœื”ืฉืชืžืฉ?

ืขื‘ื•ืจ ืœื“ืฃ gitlab https://gitlab.com/yaroslaff/hashget, ื”ืชืงืŸ ืขื ืคืงื•ื“ื” ืื—ืช (pip3 install hashget[plugins]) ื•ืคืฉื•ื˜ ืœืงืจื•ื ื•ืœื”ืคืขื™ืœ ื”ืชื—ืœื” ืžื”ื™ืจื”. ืื ื™ ื—ื•ืฉื‘ ืฉื–ื” ื™ื™ืงื— 10-15 ื“ืงื•ืช ืœืขืฉื•ืช ืืช ื›ืœ ื”ื“ื‘ืจื™ื ื”ืคืฉื•ื˜ื™ื. ืœืื—ืจ ืžื›ืŸ ืชื•ื›ืœ ืœื ืกื•ืช ืœื“ื—ื•ืก ืืช ื”ืžื›ื•ื ื•ืช ื”ื•ื™ืจื˜ื•ืืœื™ื•ืช ืฉืœืš, ืœื™ืฆื•ืจ ืงื‘ืฆื™ ืจืžื– ื‘ืžื™ื“ืช ื”ืฆื•ืจืš ื›ื“ื™ ืœื—ื–ืง ืืช ื”ื“ื—ื™ืกื”, ืœืฉื—ืง ืขื ื‘ืจื™ื›ื•ืช, ืžืกื“ ื ืชื•ื ื™ื hash ืžืงื•ืžื™ ื•ืฉืจืช hash ืื ืืชื” ืžืขื•ื ื™ื™ืŸ, ื•ืœืžื—ืจืช ืœืจืื•ืช ืžื” ื’ื•ื“ืœ ื”ื’ื™ื‘ื•ื™ ื”ืžืฆื˜ื‘ืจ ื™ื”ื™ื” ืขืœ ื–ื” ืฉืœ ืืชืžื•ืœ.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”