Synology Drive - Lista plików/katalogów niezsynchronizowanych

ODPOWIEDZ
Awatar użytkownika
adjustin
Wtajemniczony
Posty: 207
Rejestracja: pn lip 11, 2016 5:21 pm
Lokalizacja: Żory/Rybnik/Katowice

Synology Drive - Lista plików/katalogów niezsynchronizowanych

Post autor: adjustin »

Cześć wszystkim,
dzisiaj przywracałem kompa we firmie i zauważyłem, że mam na nim 1600 plików niezsynchronizowanych. Wiem z czego to wynika (za długa nazwa / bądź ścieżka) --> doczytałem w ograniczeniach Synology.
OK, musze pogadać (chyba już tysięczny raz) z pracownikami co do zasady nazewnictwa plików i katalogów. Ale:
super, że widzę tę informację w kliencie Synology Drive, jednakże chyba pół życia stracę, jak będę przeglądał każdą pozycję (do tego ścieżka pokazuje się w "dymku").
Czy jest sposób, abym wyeksportował to do jakiegoś pliku? Albo gdzieś zbiorczo w serwerze miał podgląd? Patrzyłem do Konsoli Administratora Synology Drive i nie widzę tam pozycji niezsynchronizowanych.

Nie ukrywam, że bez tego jestem w czarnej... :) :) :)
Ktoś wie jak to zrobić?
DS120j (1 x WD Red 4 TB, Ext 4, 512 MB RAM)
DS718+ (2 x WD Red Pro 2 TB, Btrfs, Raid 1, 6 GB RAM)
Awatar użytkownika
adjustin
Wtajemniczony
Posty: 207
Rejestracja: pn lip 11, 2016 5:21 pm
Lokalizacja: Żory/Rybnik/Katowice

Re: Synology Drive - Lista plików/katalogów niezsynchronizowanych

Post autor: adjustin »

Widzę, że cisza jak makiem zasiał :) Nikt nie zderzył się z tym problemem?
DS120j (1 x WD Red 4 TB, Ext 4, 512 MB RAM)
DS718+ (2 x WD Red Pro 2 TB, Btrfs, Raid 1, 6 GB RAM)
wlodekh
Wtajemniczony
Posty: 191
Rejestracja: śr sty 27, 2016 12:37 pm

Re: Synology Drive - Lista plików/katalogów niezsynchronizowanych

Post autor: wlodekh »

Nigdy nie miałem tego problemu, ale spróbowałem testowo synchronizować plik z zbyt długą nazwą, oczywiście nie poleciał na serwer. Oto co zrobiłem:
- w Synology Drive Client na kompie: Rozwiązywanie problemów -> Eksportuj dziennik diagnostyczny -> Export
- po rozpakowaniu pliku .zip w katalogu log jest pliczek deamon.log, w którym po wyszukaniu frazy '[ERROR] detector-win2.cpp(843): can't find file type of deleted item' znalazłem pełną ścieżkę do pliku, który się nie synchronizuje.
Może to jakoś Ci pomoże, bo jeśli okazałoby się, że można w ten sposób wyłapać wszystkie wadliwe ścieżki to z pliku txt już łatwo to wrzucić np. do Excela i tam jakoś obrobić. Innego pomysłu nie mam. I faktycznie logi w Konsoli Administratora Synology Drive (mimo wyszukiwarki) niewiele dają.
DS720+ | RAM Crucial 8GB DDR-2666 SODIMM | 2 x WD Red 6TB | Btrfs
Awatar użytkownika
adjustin
Wtajemniczony
Posty: 207
Rejestracja: pn lip 11, 2016 5:21 pm
Lokalizacja: Żory/Rybnik/Katowice

Re: Synology Drive - Lista plików/katalogów niezsynchronizowanych

Post autor: adjustin »

Dziękuję za odpowiedź.
Możesz mi tylko podpowiedzieć, gdzie jest ta opcja: "Rozwiązywanie problemów -> Eksportuj dziennik diagnostyczny -> Export"? Może mówisz o MACu? Bo pod WIndowsem tego jakoś nie widzę. Jednakże domyślam się, że chodzi o plik w ścieżce:
C:\Users\[nazwa użytkownika]\AppData\Local\SynologyDrive\log
Tyle że jest tam sporo plików deamon.log z dopiskiem "_0", "_1", "_2" itd..
Pomysł fajny. Ale chyba to nie to. Bo te errory pokazują mi pliki, które się zsynchronizowały lecz były z nimi jakieś problemy.

Najlepsze jest to, że gdy pliki synchronizują się z komputera do Serwera to jest OK. Co więcej widać od razu że jest coś nie tak ponieważ mam wtedy czerwony krzyżyk i poprawiam nazwę. Problem pojawia się w drugą stronę. Gdy pliki są ciągnięte z serwera do "czystego kompa" pod Windowsem. Wcześniej nigdy nie zwróciłem na to uwagi. Dopiero od jakiegoś czasu, gdy w Synology Drive Client wprowadzili komunikat o plikach niesynchronizowanych.
Co więcej, zjawisko to widziałem już w 4 firmach z różnymi Synology.

Czyli to wygląda tak, jakby nazwa pliku (przykładowo) ma sporo znaków (zapisuje się pod Windowsem) i się synchronizuje z serwerem bez problemu (pod warunkiem, że nazwa pliku nie będzie na tyle długa aby pokazać przy pliku czerwony krzyżyk). Ale w drugą stronę Windows już nie przyjmie, bo przeliczy, że ta nazwa przekracza 256 bitów (niektóre znaki w zależności od kodowania "ważą więcej lub mniej bitów". Pytanie, czy prawidłowo Synology dogaduje się z Windowsem. Chyba, że czegoś nie rozumiem.
DS120j (1 x WD Red 4 TB, Ext 4, 512 MB RAM)
DS718+ (2 x WD Red Pro 2 TB, Btrfs, Raid 1, 6 GB RAM)
wlodekh
Wtajemniczony
Posty: 191
Rejestracja: śr sty 27, 2016 12:37 pm

Re: Synology Drive - Lista plików/katalogów niezsynchronizowanych

Post autor: wlodekh »

adjustin pisze: sob maja 20, 2023 1:16 am Możesz mi tylko podpowiedzieć, gdzie jest ta opcja: "Rozwiązywanie problemów -> Eksportuj dziennik diagnostyczny -> Export"?
Synology Drive Client uruchomiony komputerze, potem 'trzy kropki' i dalej jak wyżej.
Źle zrozumiałem Twój problem i przyjąłem, że plik z długa nazwą ktoś tworzy na komputerze i on nie leci na serwer, a to ma być odwrotnie. Spróbuję coś jeszcze potestować, ale wydaje się, że mój pomysł jest do bani.
DS720+ | RAM Crucial 8GB DDR-2666 SODIMM | 2 x WD Red 6TB | Btrfs
Awatar użytkownika
adjustin
Wtajemniczony
Posty: 207
Rejestracja: pn lip 11, 2016 5:21 pm
Lokalizacja: Żory/Rybnik/Katowice

Re: Synology Drive - Lista plików/katalogów niezsynchronizowanych

Post autor: adjustin »

Dobra, mam ten eksport.
Zrobię pewien test. Pamiętam, z którymi katalogami był problem. Zsynchronizuję je z czystym kompem/kontem i przeanalizuję ten log, żeby znaleźć te komunikaty, które za dot. przedmiotowego problemu. Dam znać.
Ale połowa sukcesu już jest. Wielkie dzięki.
DS120j (1 x WD Red 4 TB, Ext 4, 512 MB RAM)
DS718+ (2 x WD Red Pro 2 TB, Btrfs, Raid 1, 6 GB RAM)
wlodekh
Wtajemniczony
Posty: 191
Rejestracja: śr sty 27, 2016 12:37 pm

Re: Synology Drive - Lista plików/katalogów niezsynchronizowanych

Post autor: wlodekh »

adjustin pisze: ndz maja 14, 2023 6:05 pm OK, musze pogadać (chyba już tysięczny raz) z pracownikami co do zasady nazewnictwa plików i katalogów.
Tak już zupełnie poza konkursem i nieco humorystycznie: zamiast leczyć może lepiej zapobiegać chorobie? Oczyma wyobraźni widzę to tak: w harmonogramie zadań (uruchamianie np. co godzinę) jest zadanie z plikiem wsadowym, który wyszukuje pliki z długimi nazwami (albo raczej ścieżki) i je skraca do odpowiedniej, akceptowalnej długości. Pewno dałoby się taki bach napisać, może robocopy, ren lub coś podobnego, a może python. Kiedyś robiłem coś w ten deseń u siebie w pracy, ale używałem również sql. Jasne, że jest wyzwanie, ale czego się nie robi dla spokoju ducha? ;)

Przykładowy plik .bat z kopiowaniem ścieżek do pliku tekstowego wygląda tak:
dir /b/ad/a-h X:\katalog_zrodlowy > X:\katalog_docelowy\wynik.txt
DS720+ | RAM Crucial 8GB DDR-2666 SODIMM | 2 x WD Red 6TB | Btrfs
Awatar użytkownika
adjustin
Wtajemniczony
Posty: 207
Rejestracja: pn lip 11, 2016 5:21 pm
Lokalizacja: Żory/Rybnik/Katowice

Re: Synology Drive - Lista plików/katalogów niezsynchronizowanych

Post autor: adjustin »

Z tym skryptem fajny pomysł. Dodałem, aby brane pod uwagę pliki. Zrobiłem coś takiego na podstawie Twojego pomysłu:

Kod: Zaznacz cały

@echo off
setlocal

chcp 65001 > nul

set "sourceDir=C:\Users\....\katalog do przeskanowania"	# Jakiś wybrany katalog, który chcemy przeskanować.
set "outputFile=C:\Users\....\Downloads\wynik.txt"	# Tutaj akurat katalog "Pobierz" w którym zapisany zostanie wynik.

dir /b /a-d /s "%sourceDir%" > "%outputFile%"

endlocal
Teraz import pliku txt do Excela i funkcją "=DŁ()" wygenerować ilość znaków w osobnej kolumnie wobec każdej pozycji i na końcu posortować od największej liczby do najmniejszej :)
DS120j (1 x WD Red 4 TB, Ext 4, 512 MB RAM)
DS718+ (2 x WD Red Pro 2 TB, Btrfs, Raid 1, 6 GB RAM)
Awatar użytkownika
adjustin
Wtajemniczony
Posty: 207
Rejestracja: pn lip 11, 2016 5:21 pm
Lokalizacja: Żory/Rybnik/Katowice

Re: Synology Drive - Lista plików/katalogów niezsynchronizowanych

Post autor: adjustin »

Jednakże nie zmienia to tematu, że nadal nie mogę skumać w czym rzecz. Jak już napisałem: zrobię test i napiszę co z niego wynika :)
DS120j (1 x WD Red 4 TB, Ext 4, 512 MB RAM)
DS718+ (2 x WD Red Pro 2 TB, Btrfs, Raid 1, 6 GB RAM)
wlodekh
Wtajemniczony
Posty: 191
Rejestracja: śr sty 27, 2016 12:37 pm

Re: Synology Drive - Lista plików/katalogów niezsynchronizowanych

Post autor: wlodekh »

Taka ciekawostka, kazałem ChatGPT napisać skrypt batch wyświetlający TYLKO pliki, których ścieżka jest dłuższa niż 256 znaków, wynik powinien być zrzucony do pliku .txt. No i napisał. Działa pod warunkiem, że skrypt jest umieszczony w katalogu, który ma przeszukać:

Kod: Zaznacz cały

@echo off
setlocal enabledelayedexpansion

set "directory=d:\test"  #Zastąp to właściwą ścieżką do katalogu, który chcesz przeszukać
set "output=wynik.txt"

if exist "%output_file%" del "%output_file%"

for /r "%directory%" %%F in (*) do (
    set "file_path=%%F"
    if "!file_path:~256!" neq "" (
        echo !file_path! >> "%output%"
    )
)
endlocal
Pewno można go zmodyfikować żeby mógł być umieszczony w dowolnym katalogu, można też pokusić się o to aby od razu skracał nazwy tych plików. Kto wie jakby to wyglądało w Pytonie. Ten ChatGPT nie jest taki głupi... :roll:

Edycja:
ChatGPT napisał skrypt w Pythonie znajdujący pliki, dla których ścieżka jest dłuższa niż 256 znaków, a następnie zmienia nazwy tych plików ucinając znaki od końca. Sprawdziłem, działa. Oryginalna odpowiedź ChatGPT:

W tym przykładzie należy zmienić wartość zmiennej target_directory na ścieżkę do katalogu, w którym chcesz zmieniać nazwy plików. Skrypt przechodzi przez wszystkie pliki w podanym katalogu i jego podkatalogach. Jeśli długość ścieżki pliku przekracza 256 znaków, tworzona jest nowa nazwa pliku z oryginalną ścieżką i odpowiednią ilością znaków od końca nazwy pliku (w tym przykładzie wycinamy ostatnie 10 znaków z nazwy pliku). Następnie pełna ścieżka dla nowej nazwy pliku jest tworzona przez połączenie oryginalnej ścieżki z nową nazwą pliku. Na końcu skrypt zmienia nazwę pliku na nową nazwę z zachowaniem pełnej ścieżki.

I skrypt Python:

Kod: Zaznacz cały

import os

def change_file_names(directory):
    for root, dirs, files in os.walk(directory):
        for file in files:
            file_path = os.path.join(root, file)
            file_name, file_ext = os.path.splitext(file)

            # Sprawdzanie długości ścieżki
            path_length = len(file_path)
            
            # Sprawdzanie, czy ścieżka jest dłuższa niż 256 znaków
            if path_length > 256:
                # Tworzenie nowej nazwy pliku z oryginalną ścieżką i odpowiednią ilością znaków od końca nazwy pliku
                new_file_name = file_name[:-10]  # Przykładowo: Wycinamy ostatnie 10 znaków z nazwy pliku

                # Tworzenie pełnej ścieżki dla nowej nazwy pliku
                new_file_path = os.path.join(root, new_file_name + file_ext)

                # Zmiana nazwy pliku
                print(f"Zmieniam nazwę pliku: {file_path} na {new_file_path}")
                os.rename(file_path, new_file_path)

# Podaj ścieżkę do katalogu, w którym chcesz zmieniać nazwy plików
target_directory = r"C:\Sciezka\Do\Katalogu"

change_file_names(target_directory)

print("Skrypt zakończył działanie.")
Skrypt batch też napisał, ale u mnie nie działał, może coś skopałem. W każdym razie można się pobawić.
DS720+ | RAM Crucial 8GB DDR-2666 SODIMM | 2 x WD Red 6TB | Btrfs
ODPOWIEDZ