<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archiwa QNAP - soban</title>
	<atom:link href="https://soban.pl/pl/category/qnap/feed/" rel="self" type="application/rss+xml" />
	<link>https://soban.pl/pl/category/qnap/</link>
	<description>IT, Linux, Servers, Security</description>
	<lastBuildDate>Tue, 11 Feb 2025 15:18:55 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>
	<item>
		<title>Automatyczne usuwanie najstarszych plików na zdalnym dysku QNAP przez SSHFS</title>
		<link>https://soban.pl/pl/automatyczne-usuwanie-najstarszych-plikow-na-zdalnym-dysku-qnap-przez-sshfs/</link>
		
		<dc:creator><![CDATA[soban]]></dc:creator>
		<pubDate>Fri, 07 Feb 2025 14:41:45 +0000</pubDate>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[QNAP]]></category>
		<category><![CDATA[Skrypt]]></category>
		<guid isPermaLink="false">https://soban.pl/?p=566</guid>

					<description><![CDATA[<p>Automatyzacja Zarządzania Przestrzenią Dyskową w Środowisku Linux W dzisiejszym cyfrowym świecie, gdzie dane gromadzone są w coraz większych ilościach, zarządzanie przestrzenią dyskową staje się kluczowym elementem utrzymania efektywności operacyjnej systemów. W tym artykule przedstawię skrypt, który automatyzuje proces zarządzania przestrzenią na zdalnym dysku montowanym przez SSHFS, szczególnie przydatny dla administratorów systemów, którzy regularnie muszą radzić [&#8230;]</p>
<p>Artykuł <a href="https://soban.pl/pl/automatyczne-usuwanie-najstarszych-plikow-na-zdalnym-dysku-qnap-przez-sshfs/">Automatyczne usuwanie najstarszych plików na zdalnym dysku QNAP przez SSHFS</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="501" height="497" src="https://soban.pl/wp-content/uploads/2025/02/image.png" alt="" class="wp-image-574" srcset="https://soban.pl/wp-content/uploads/2025/02/image.png 501w, https://soban.pl/wp-content/uploads/2025/02/image-300x298.png 300w, https://soban.pl/wp-content/uploads/2025/02/image-150x150.png 150w" sizes="(max-width: 501px) 100vw, 501px" /></figure>



<p><br><strong>Automatyzacja Zarządzania Przestrzenią Dyskową w Środowisku Linux</strong></p>



<p>W dzisiejszym cyfrowym świecie, gdzie dane gromadzone są w coraz większych ilościach, zarządzanie przestrzenią dyskową staje się kluczowym elementem utrzymania efektywności operacyjnej systemów. W tym artykule przedstawię skrypt, który automatyzuje proces zarządzania przestrzenią na zdalnym dysku montowanym przez SSHFS, szczególnie przydatny dla administratorów systemów, którzy regularnie muszą radzić sobie z zapełniającymi się nośnikami danych.</p>



<h3 class="wp-block-heading">Wymagania wstępne</h3>



<p>Przed rozpoczęciem, upewnij się, że na twoim systemie zainstalowane jest SSHFS oraz wszystkie niezbędne pakiety umożliwiające jego prawidłową pracę. SSHFS pozwala na montowanie systemów plików zdalnych przez SSH, co jest kluczowe dla działania naszego skryptu. Aby zainstalować SSHFS oraz niezbędne narzędzia, w tym pakiet umożliwiający przekazywanie hasła (sshpass), użyj poniższego polecenia:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">sudo apt-get update
sudo apt-get install sshfs fuse sshpass -y</pre></div>



<h3 class="wp-block-heading">Skrypt Bash do zarządzania przestrzenią dyskową</h3>



<p>Nasz skrypt Bash skupia się na monitorowaniu i utrzymaniu określonego procentu wolnej przestrzeni dyskowej na zdalnym dysku, montowanym za pomocą SSHFS. Oto główne funkcje skryptu:</p>



<p><strong>Definicja Celów:</strong></p>



<p>TARGET_USAGE=70 &#8211; procent przestrzeni dyskowej, który chcemy utrzymać jako zajęty. Skrypt będzie działał na rzecz utrzymania przynajmniej 30% wolnego miejsca na dysku.</p>



<p><strong>Punkt Montowania i Ścieżki:</strong></p>



<p>MOUNT_POINT=&#8221;/mnt/qnapskorupki&#8221; &#8211; lokalny katalog, w którym montowany jest zdalny dysk. TARGET_DIRS=&#8221;$MOUNT_POINT/up*.soban.pl&#8221; &#8211; ścieżki katalogów, w których skrypt będzie szukał plików do usunięcia, jeśli zajdzie taka potrzeba.</p>



<p><strong>Funkcja check_qnap:</strong> Ta funkcja sprawdza, czy dysk jest zamontowany i czy katalog montowania nie jest pusty. Jeśli są problemy, skrypt próbuje odmontować i ponownie zamontować dysk, używając sshfs z hasłem przekazanym przez sshpass.</p>



<p><strong>Usuwanie Plików:</strong> Skrypt monitoruje użycie dysku i, jeśli przekroczone jest TARGET_USAGE, znajduje i usuwa najstarsze pliki w określonych katalogach aż do osiągnięcia docelowego poziomu wolnej przestrzeni.</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">#!/bin/bash

TARGET_USAGE=70
MOUNT_POINT="/mnt/qnapskorupki"
TARGET_DIRS="$MOUNT_POINT/up*.soban.pl"

# Function to check and mount SSHFS
function check_qnap {
    local remote_path="/share/MD0_DATA/backup_proxmox/"
    local user_remote="remote_user"
    local remote_host="192.168.1.XX"
    local port=22
    local password='XXXXXXXXXXXXXXXXXXXXXXX'

    # Check if the mounting directory exists and is empty
    if [ ! -d "$MOUNT_POINT" ] || [ -z "$(ls -A $MOUNT_POINT)" ]; then
        echo "Problem: The directory $MOUNT_POINT is missing or empty. Attempting to remount..."

        # Unmount if anything is currently mounted
        if mountpoint -q $MOUNT_POINT; then
            echo "Unmounting $MOUNT_POINT..."
            fusermount -u $MOUNT_POINT
            sleep 5
        fi

        # Remount
        echo "Mounting SSHFS: $user_remote@$remote_host:$remote_path to $MOUNT_POINT..."
        echo $password | sshfs $user_remote@$remote_host:$remote_path $MOUNT_POINT -o password_stdin

        # Check if the mounting was successful
        if mountpoint -q $MOUNT_POINT; then
            echo "QNAP successfully mounted."
        else
            echo "Error: Failed to mount $remote_host:$remote_path to $MOUNT_POINT."
            exit 1
        fi
    fi
}

# Check and mount the disk
check_qnap

# Begin deleting files
current_usage=$(df --output=pcent "$MOUNT_POINT" | tail -n 1 | tr -d '%')
echo "Current usage: $current_usage%"
target_free_space=$((100 - $TARGET_USAGE))

# Continue deleting files until the required free space is achieved
while [[ $current_usage -gt $TARGET_USAGE ]]; do
    # Find the oldest file in the target directories
    oldest_file=$(find $TARGET_DIRS -type f -printf '%T+ %p\n' | sort | head -n 1 | cut -d' ' -f2)

    if [ -z "$oldest_file" ]; then
        echo "No files to delete."
        break
    fi

    # Delete the oldest file
    echo "Deleting file $oldest_file..."
    rm -f "$oldest_file"

    # Check usage again
    current_usage=$(df --output=pcent "$MOUNT_POINT" | tail -n 1 | tr -d '%')
    echo "New usage after deletion: $current_usage%"
done

echo "Target disk usage achieved."</pre></div>



<h3 class="wp-block-heading">Przykładowe wywołanie skryptu:</h3>



<figure class="wp-block-image size-full"><img decoding="async" width="795" height="164" src="https://soban.pl/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-07-153719-4.png" alt="skrypt zaczyna pracę i stopniowo usuwa pliki" class="wp-image-579" srcset="https://soban.pl/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-07-153719-4.png 795w, https://soban.pl/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-07-153719-4-300x62.png 300w, https://soban.pl/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-07-153719-4-768x158.png 768w" sizes="(max-width: 795px) 100vw, 795px" /></figure>



<p>skrypt będzie pracować aż do osiągnięcia 70% zgodnie z założeniem:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="778" height="232" src="https://soban.pl/wp-content/uploads/2025/02/2.jpg" alt="Skrypt pracuje do osiągniecia 70%" class="wp-image-580" srcset="https://soban.pl/wp-content/uploads/2025/02/2.jpg 778w, https://soban.pl/wp-content/uploads/2025/02/2-300x89.jpg 300w, https://soban.pl/wp-content/uploads/2025/02/2-768x229.jpg 768w" sizes="(max-width: 778px) 100vw, 778px" /></figure>



<h3 class="wp-block-heading">Pobieranie skryptu i dodawanie do crontaba</h3>



<p>Skrypt oczywiście należy dostosować pod swoje wymagania, jednak jeśli chcesz go pobrać i dodać do crontaba to:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">wget soban.pl/bash/remove_old_files.sh
chmod +x remove_old_files.sh</pre></div>



<p>Jeśli chcemy zautomatyzować proces usuwania np pod koniec dnia, to warto dodać do crontaba następujący wpis:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">crontab -e</pre></div>



<p>Skrypt będzie się uruchamiać w tym przypadku o 23:55 każdego dnia:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">45 23 * * * /root/scripts/remove_old_files.sh &gt; /dev/null 2&gt;&amp;1</pre></div>



<p>Należy zachować powyżej odpowiednią ścieżkę do skryptu.</p>



<h3 class="wp-block-heading">Bezpieczeństwo i optymalizacja</h3>



<p>Skrypt używa hasła wprost w linii komend, co może stanowić ryzyko bezpieczeństwa. W praktycznym zastosowaniu zaleca się użycie bardziej zaawansowanych metod autentykacji, na przykład kluczy SSH, które są bezpieczniejsze i nie wymagają jawnej obecności hasła w skrypcie. Jednak w przypadku QNAPa posłużyliśmy się hasłem pisząc ten skrypt.</p>



<h3 class="wp-block-heading">Podsumowanie</h3>



<p>Prezentowany skrypt jest przykładem, jak można automatyzować codzienne zadania administracyjne, takie jak zarządzanie przestrzenią dyskową, zwiększając tym samym efektywność i niezawodność operacji. Jego implementacja w realnych środowiskach IT może znacznie usprawnić procesy zarządzania danymi, zwłaszcza w sytuacjach, gdzie szybkie reagowanie na zmiany w użyciu dysku jest krytyczne.</p>
<p>Artykuł <a href="https://soban.pl/pl/automatyczne-usuwanie-najstarszych-plikow-na-zdalnym-dysku-qnap-przez-sshfs/">Automatyczne usuwanie najstarszych plików na zdalnym dysku QNAP przez SSHFS</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
