Przejdź do treści

Część III

Zdalne kopiowanie plików

scp

scp jest analogiem cp, które pozwala kopiować pliki pomiędzy różnymi maszynami. Składnia jest podobna:

scp <source> <target>

gdzie zarówno <source> jak i <target> mogą być albo ścieżką lokalną, albo zdalną, np.

z1234567@student.tcs.uj.edu.pl:~/folder/file.txt

Często używane flagi:

  • -r kopiuje zawartość katalogu i wszystkich podkatalogów rekurencyjnie;
  • -p zachowuje takie metadane plików, jak czas modyfikacji/dostępu, prawa dostępu;
  • -i używa klucza prywatnego zamiast hasła.

scp świetnie nadaje się do jednorazowych transferów danych.

rsync

rsync natomiast bardziej pasuje w scenariuszu, gdzie mamy duży folder i modyfikujemy tylko niektóre pliki. rsync wysyła tylko zmienione/nowe pliki, a nie cały folder.

Często używane flagi:

  • -a zachowuje metadane plików;
  • -v wypisuje szczegóły transferu;
  • -z kompresja danych podczas transferu;
  • --dry-run wyświetla efekt hipotetycznego wykonania polecenia, ale nie wysyła żadnych danych.

rsync działa również lokalnie.

Ukośnik końcowy

source/ kopiuje zawartość katalogu source, natomiast source kopiuje sam katalog.

grep: wyszukiwanie w tekście

grep wypisuje linie, które spełniające podany wzorzec. Na przykład

$ grep "word" info.txt

wypisze wszystkie linie w pliku info.txt, zawierające "word" (niekoniecznie oddzielone spacjami). Wzorce mogą być znacznie bardziej skomplikowane, niż po prostu słowa; o tym będzie mowa na późniejszych zajęciach.

Często używane flagi:

  • -i ignoruje wielkość liter, tzn dopasowuje zarówno "Word", "word", jak i "WORD";
  • -v wypisuje linie, które nie spełniają wzorca;
  • -n przed każdą dopasowaną linią, wypisuje jej numer;
  • -c wypisuje tylko liczbę dopasowanych linii.

grep akceptuje też tekst podany na wejściu standardowym zamiast pliku, więc świetnie współpracuje z potokami:

$ grep ... | grep ... | grep ...

curl: zapytania HTTP

Najprostsze zastosowanie curl to pobieranie stron internetowych.

$ curl https://srodowisko.tcs.uj.edu.pl
  • -X ustawia metodę HTTP (tzn. GET, POST, PUT, albo DELETE);
  • -o zapisuje wyjście do pliku;
  • -L podąża za przekierowaniami HTTP;
  • -I pobiera tylko nagłówki.

Więcej o przekierowaniach strumieni

W części I dowiedzieliśmy, że istnieją strumienie wyjścia i wejścia standardowego, z/do których można przekierować dane do komend. Istnieje też trzeci strumień -- wyjście standardowe błędów (stderr) -- do którego większość komend przekierowuje komunikaty błędów/ostrżeżen. Domyślnie, wyjście programów jest wyświetlane w terminalu, więc zarówno stdout jak i stderr są wyświetlane obok siebie.

Podobnie jak wyjście standardowe możemy przekierować do pliku za pomocą >, do przekierowania wyjścia standardowego błędów służy 2>:

./script-with-errors.sh 2> error.log

stworzy plik o nazwie error.log, gdzie znajdą się zawartość strumienia stderr. Stdout natomiast nadal będzie wyświetlany w terminalu, ale go można też przekierować, dodając > out.log do polecenia.