SCP sadece en son dosya


0

Uzak bir klasörden SCP'yi kullanarak sadece en son dosyayı indirmek istiyorum. Dosyalar raw_201712282131.ubx, sayının dosyanın tarih olduğu biçimindedir .

SSH'de bu komutu yaparsam en son dosya adını alabilirim:

find -name '*.ubx' | sort -V | tail -1

SCP kullanarak sadece en son dosya nasıl indirilir?

Yanıtlar:


1

Bunu deneyebilir ve çalışıp çalışmadığını görebilirsiniz. MacOS'ta çeşitli Linux (CentOS, Ubuntu, vb.) Sunucularına giden benim için iyi çalışıyor:

RECENT=$(ssh someone@example.com ls -lrt /remote/path/ | awk '/.ubx/ { f=$NF }; END { print f }');
scp someone@example.com:/remote/path/${RECENT} /local/path/${RECENT};

İlk satır, uzantısıyla birlikte en son dosyayı alır .ubxve onu $RECENTdeğişkene atar .

Bir sonraki satır sadece SCP komutunun kendisini çalıştırır. Her iki çizgiyi de bu şekilde birleştirerek onu “tek astar” haline getirebilirsiniz:

RECENT=$(ssh someone@example.com ls -lrt /remote/path/ | awk '/.ubx/ { f=$NF }; END { print f }'); scp someone@example.com:/remote/path/${RECENT} /local/path/${RECENT};

Ve elbette — sadece kullanıcı, ana bilgisayar adı için değişkenler ayarlayabilir /remote/path/ve /local/path/bunu tek bir komutla çalıştırmak için bir Bash komut dosyasına yerleştirebilirsiniz, get_latest_ubx.shböylece her seferinde böyle bir komutu yazmak zorunda kalmazsınız kullanman gerek.

#!/bin/bash

# Assign the variables.
USER='someone';
HOST='example.com';
LOCAL_PATH='/local/path/';
REMOTE_PATH='/remote/path/';

# Get the most recent `.ubx` file and assign it to `RECENT`.
RECENT=$(ssh ${USER}@${HOST} ls -lrt ${REMOTE_PATH} | awk '/.ubx/ { f=$NF }; END { print f }');

# Run the actual SCP command.
scp ${USER}@${HOST}:${REMOTE_PATH}${RECENT} ${LOCAL_PATH}${RECENT};

Anlaşılan fikrimi değiştiren son dosyaya dl ihtiyacım yoktu.
— bakalolo

@bakalolo Peki, bu cevap size herhangi bir şekilde yardımcı olduysa, lütfen onu oyladığınızdan emin olun. Sorununuzu çözen cevap buysa, lütfen bunu kontrol ettiğinizden emin olun.
— JakeGould,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.