In een Linux-omgeving met meerdere servers omvatten veel taken het verplaatsen van een of meer bestanden van de ene server naar de andere. Afhankelijk van het aantal bestanden dat u moet verplaatsen, zijn er verschillende opdrachten die u kunnen helpen….
Laten we voor deze discussies aannemen dat onze servers Alice en Madhat zijn, en dat onze gebruiker op Alice konijn is en dat onze gebruiker op madhat Fieldmouse is.
Stappen
Stap 1. Probeer voor een enkel bestand de opdracht "scp"
Je kunt dit gebruiken als een "push"- of een "pull"-opdracht, maar laten we beginnen met het bestand naar de andere server te pushen. Gebruik in Alice het commando "scp myfile fieldmouse@madhat:thatfile". Dit zal het bestand naar het andere systeem kopiëren, in de fieldmouse userid, met de naam "thatfile". Als je op het andere systeem was ingelogd, zou je het bestand net zo gemakkelijk kunnen ophalen met het commando "scp rabbit@alice:myfile thatfile", en dezelfde resultaten krijgen.
Stap 2. Om een hele directory te kopiëren, kunnen we opnieuw het commando "scp" gebruiken
Deze keer voegen we de schakeloptie -r toe, zodat de kopie "recursief" werkt. "scp -r mijndir fieldmouse@madhat:." zal de volledige map "mydir" naar het andere systeem kopiëren, inclusief alle inhoud en extra mappen. De directory op madhat zal nog steeds mydir heten.
Stap 3. Wat als u een grote "rommel" van bestanden en mappen hebt om te kopiëren?
Je zou het "tar" commando kunnen gebruiken om een enkel bestand te maken, en dan dat bestand te kopiëren zoals hierboven, en dan tar te gebruiken om het uit te breiden op de andere server… Maar dat lijkt zo… Un-unix-achtig. Er moet toch een manier zijn om het in één stap te doen? Nou natuurlijk! Voer de pijpen van je favoriete schelpen in. We kunnen nog steeds tar gebruiken om de bestanden die we willen in te pakken, en dan ssh gebruiken om het naar het andere systeem te krijgen (wat scp onder de dekens heeft gebruikt), en tar aan de andere kant om de bestanden weer uit te breiden. Maar waarom zou u tijd en ruimte verspillen aan het maken van een echt tar-bestand, als we gewoon een pijp zouden kunnen maken die de twee systemen omspant en de tar-gegevens er doorheen kan overbrengen? Gebruik dezelfde map als in het vorige voorbeeld en probeer "tar -cf - mydir/ * | ssh fieldmouse@madhat 'tar -xf -'"
Tips
- Natuurlijk zijn er ook andere manieren om dit te doen. Linux zit vol met tools. Uw kilometerstand kan variëren
- U dient de gebruikersnaam/hostnaam/bestandsnaam/directorynaam te vervangen in overeenstemming met uw netwerkconfiguratie en omgeving terwijl u bovenstaande opdrachten gebruikt. Bovenstaande opdrachten zijn slechts voorbeelden van het uitvoeren van opdrachten voor het kopiëren van bestanden op de server.