Usuwanie duplikatów z Dysku Google
25.09.2016 19:41
To nie będzie długi wpis, jedynie użyteczna notka dla potomnych. Może w nowej odsłonie bloga nie skażecie takich wpisów na niebyt? :P
Przenosiłem ostatnio swoje pliki z Dropboxa na Dysk Google i pociągnęło to za sobą kilka niemiłych konsekwencji. Pierwszą konsekwencją było to, że pliki wysyłam na chmurę już kilka dni, ale w tej chwili, na szczęście zbliżam się do końca. Drugą poważną konsekwencją było utworzenie się duplikatów większości plików. Problem jest taki, że mam tam sporo projektów Visual Studio, a jak wiadomo projekt taki ma bardzo, bardzo dużo plików.
Jak doszło do powstania duplikatów?
Te same pliki miałem na stacjonarce i na laptopie. Uznałem, że szybciej będzie, gdy będę wysyłał z obu urządzeń na raz, przez dwie różne sieci. Niestety Google nie posiada takiego sprytnego algorytmu jak Dropbox, z którym nie miałem wcześniej problemu w takiej sytuacji. To co wysłałem już ze stacjonarki, zaczęło bezlitośnie drugi raz wysyłać się z laptopa, mimo że identyczne pliki były już na chmurze (brawo Google). Po dniu zauważyłem, że powstały duplikaty w stylu "obrazek (1).png". Niestety w internecie, mimo kilku wątków mówiących o problemie, nikt tak na prawdę nie rozwiązuje do końca tego problemu. Zaleca się użycie CCleneara albo temu podobnych narzędzi. Problem w tym, że w moim przypadku użycie takiego narzędzia nie wchodzi w grę. W wielu projektach mam te same pliki i tak ma być. Czyściciele wymieszały wszystkie "prawdziwe" duplikaty z niezbędnymi "duplikatami" z różnych projektów.
Rozwiązanie
Pomyślałem, że w takiej sytuacji mógłby pomóc PowerShell. Po dłuższym czasie (nie znam się na PowerShellu ;] ) udało mi się stworzyć komendę, która znajduje wszystkie duplikaty, wyszukując wszystkie pliki, które w nazwie posiadają "(1).". Nie jest to pewnie doskonałe rozwiązanie, ale jak dla mnie świetnie spełniło swoją rolę.
Komenda wyszukująca, którą można najpierw sprawdzić, co usuniemy:
[code=PowerShell]Get-ChildItem -Filter *`(1`).* -Recurse[/code]
Usuwanie:
[code=PowerShell]Get-ChildItem -Filter *`(1`).* -Recurse | Remove-Item[/code]
Zrobione!
Może komuś pomogę tym wpisem, sam najpierw zmarnowałem sporo czasu, próbując usuwać te pliki ręcznie. Masakra!