Dit is de opdracht fsync die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
fssync - Synchronisatietool voor bestandssystemen (1-weg, via SSH)
KORTE INHOUD
fsync -d db -r wortel [optie gastheer
PRODUCTBESCHRIJVING
fssync is een 1-weg bestandssynchronisatietool die inodes bijhoudt en een lokaal bestand onderhoudt
database met bestanden die zich op de externe kant bevinden, waardoor het mogelijk is om:
· efficiënt omgaan met een groot aantal mappen/bestanden
· detecteer hernamen/verplaatsingen en harde links
Het is gericht op het minimaliseren van netwerkverkeer en het synchroniseren van elk detail van een bestandssysteem:
· alle soorten inode: bestand, dir, blok/teken/fifo, socket, symlink
· behoud harde links
· wijzigingstijd, eigendom/toestemming/ACL, uitgebreide attributen
· schaarse bestanden
Andere kenmerken:
· het kan worden geconfigureerd om bestanden uit te sluiten van synchronisatie
· fssync kan op elk moment worden onderbroken en hervat, waardoor het tolerant is voor willekeurige fouten
(bijv. netwerkfout)
· algoritme voor het synchroniseren van bestandsinhoud is ontworpen om grote bestanden zoals VM-afbeeldingen te verwerken
efficiënt, door aangepaste blokken met een vaste grootte ter plaatse bij te werken
Het belangrijkste gebruik van fsync is het voorkomen van gegevensverlies in geval van een hardwarestoring, waarbij RAID1 aanwezig is
niet mogelijk (bijvoorbeeld in laptops).
On Btrfs [1] bestandssystemen, fsync is een nuttig alternatief voor btrfs sturen (En ontvangen)
commando's, dankzij filtermogelijkheden. Dit kan worden gecombineerd met Btrfs-snapshots
aan de bestemmingszijde voor een volledige back-upoplossing.
GEBRUIK
Te gebruiken fsync --help voor de volledige lijst met opties.
Het belangrijkste om te onthouden is dat de lokale database precies moet overeenkomen met wat er is
op de bestemmingshost:
· Bestanden die naar de doelhost worden gekopieerd, mogen niet worden gewijzigd. En niets zou moeten
handmatig worden aangemaakt in de doelmappen. Als u nog steeds toegang wilt tot gegevens op
externe host, moet u dit doen via een alleen-lezen bindmount (vereist Linux >=
2.6.26).
· U moet over 1 database per bestemming beschikken als u van plan bent meerdere exemplaren ervan te hebben
bronmap.
Kijken naar -c optie als u zich afvraagt of uw database overeenkomt met de doelmap.
Eerste run van fsync:
· De eenvoudigste manier is om fsync alles te laten doen. Geef een niet-bestaand bestandspad op naar -d
optie en een lege of niet-bestaande doelmap (zie -R keuze). fsync zal
maakt automatisch de database aan en kopieert alle mappen/bestanden naar de externe host.
· Een snellere manier kan zijn om de eerste kopie op een andere manier te maken, zoals een onbewerkte kopie van een
partitie. Als u er absoluut zeker van bent dat de bron en de bestemming precies hetzelfde zijn,
u kunt de database initialiseren door op te geven - als gastheer. Als de inodenummers hetzelfde zijn
aan beide kanten, wat het geval is als gegevens op blokniveau zijn gekopieerd, kunt u de
bronpartitie terwijl u de database op de doelpartitie initialiseert, en ga terug
de DB lokaal.
Een voorbeeld van een wrapper rond fsync, met een filter, is te vinden op voorbeelden/fsync_home
fssync daalt nooit af in mappen op andere bestandssystemen. Inodes gemaskeerd door bevestigingspunten
worden ook overgeslagen, dus u moet ze tijdelijk ontkoppelen als u dat wilt
gesynchroniseerd. Hetzelfde resultaat kan worden bereikt door te synchroniseren vanaf een bindmount.
Zie ook de GEEN cijfer schakelen [2] patch als je geen encryptie nodig hebt en dat wel wilt
versnel uw SSH-verbinding.
HOE IT WERKEN
fssync onderhoudt een enkele SQLite-tabel van alle dirs/bestanden die zich op de externe kant bevinden. Elk
rij komt overeen met een pad, met zijn inode (aan de lokale kant), andere metagegevens (aan de externe kant) en a
gecontroleerd vlag.
Tijdens het uitvoeren itereert fsync recursief door alle lokale mappen/bestanden en voor elk pad
dat wordt niet genegeerd (zie -f optie), vraagt het de DB om te beslissen wat te doen. Als al
gecontroleerd, wordt het pad onmiddellijk overgeslagen. Wanneer een pad wordt gesynchroniseerd, wordt het gemarkeerd als
gecontroleerd. Aan het einde alle rijen die dat niet zijn gecontroleerd komt overeen met paden die niet bestaan
meer. Zodra ze aan de externe kant zijn verwijderd, worden ze allemaal verwijderd gecontroleerd vlaggen worden gereset.
Storing tolerantie
In feite vereist fsync niet dat de database perfect overeenkomt met de bestemming. Het
tolereert enkele verschillen om een onderbroken synchronisatie veroorzaakt door een
netwerkstoring, een bestandsbewerkingsfout of iets anders dan een crash van het besturingssysteem
van de lokale host (of iets vergelijkbaars, zoals een stroomstoring).
In de meeste gevallen wordt dit gedaan door de externe host, die automatisch
indien nodig een inode van het verwachte type. De enige uitzondering is dat de afstandsbediening dat wel doet
Verwijder nooit zelf een niet-lege map. Voor de meeste complexe gevallen journaliseert fsync
de bewerking in de database: in geval van een storing kan fsync de volgende keer herstellen
synchroniseren.
Race voorwaarden
Een race condition betekent dat andere processen op de lokale host inodes wijzigen
fsync is aan het synchroniseren. fsync kan elke vorm van raceconditie aan. In feite heeft fsync dat wel
In de meeste gevallen is er niets aan de hand.
Wanneer er zich een race condition voordoet, garandeert fsync niet dat de externe gegevens zich in een
consistente staat. Bij elke synchronisatie worden altijd bestaande inconsistenties opgelost, maar deze kunnen ook worden geïntroduceerd
anderen, dus fsync is niet geschikt voor het maken van back-ups van databases.
Met Btrfs kunt u consistentie verkrijgen door momentopnamen te maken aan de bronzijde.
VERGELIJKBAAR PROJECTEN
Het idee om een lokale database te onderhouden komt eigenlijk vandaan csync2 [3]. ik ging net
adopteerde het toen ik besefte dat ik echt een tool nodig had die altijd hernoemingen/verplaatsingen van
grote bestanden. Daarom zie ik fssync als een gedeeltelijke herschrijving van csync2, met inode-tracking en
zonder bidirectionele synchronisatie. De lokale database maakt echt fsync & csync2
sneller dan de bekende rsync [4].
Gebruik fsync online met behulp van onworks.net-services