顯示具有 sync 標籤的文章。 顯示所有文章
顯示具有 sync 標籤的文章。 顯示所有文章

2023年3月29日 星期三

完整清除 Uninstall pCloud Drive app @ macOS 13.2.1


故事是這樣的,幾個月前實驗使用 Cryptomator + pCloud 備份,由於前者會將資料切個成常見的零碎的目錄結構,如果有檔案出現異常時,整個資料就無法讀取。

Error Code 4VHF:Q9JM:I1GP

最近 pCloud 很頻繁更新,再加上更新至 Cryptomator 1.7.3 ,很奇妙的,有一個高頻變動的目錄,開始出現無法讀取的現象。經過幾番追蹤後,確認是因為 Cryptomator + macFUSE 方案產生的現象,接著做檔案搬遷就會出錯,無論降低版本到 Cryptomator 1.6.17 還是升級 macFUSE 4.4.2,都沒法排除。

測試方式是建立新的加密庫,接著 rsync -avP 搬遷,皆會一陣子就出現 input/output error 。最後將 Cryptomator 更換成 WebDAV 模式後,才確定排除。且 Cryptomator 錯誤訊息介面可以快速跳到 github 4VHF:Q9JM:I1GP 相關討論區,也在講 macFUSE 的事情。排除問題後,就進入到這次的主題 pCloud app 的處理。

pCloud App Bug?沒有 synced folders 規則,還一直在同步

pCloud App Bug?沒有 synced folders 規則,添加時還顯示已在同步(已有規則)

重建完加密庫後,想要透過 pCloud app 同步資料時,發現整個 pCloud Drive app - macOS 進入到非常詭異的狀態,我只是把 pCloud app - Synced Folders 的目錄透過介面打 X 取消指定目錄同步,下一刻我發現本地的目錄被刪除了,對應的 pCloud 雲端上的資料也被刪除。這件事其實還滿嚴重的。

當初對 pCloud 的用法也是處於體驗,純粹當作另一處備份區,想說資料不見也沒差再重建就好。殊不知在本地重建時, pCloud app 一直還是不斷的 sync 指定目錄,且同步到 pCloud 的家目錄區(首頁),導致整個 pCloud 首頁大亂。

pCloud App Bug?同步上去都擺在家目錄,家目錄都亂了

我推論比較像 pCloud app 有問題,處理舊的同步規則時,似乎把所有東西都建立在 pCloud 家目錄,而非保有 Cryptomator 目錄結構:

% tree -L 2 My-Resource 
My-Resource 
├── d
│   ├── J2
│   └── XX
├── masterkey.cryptomator
├── masterkey.cryptomator.########.bkup
├── vault.cryptomator
├── vault.cryptomator.########.bkup
└── 重要.rtf

4 directories, 5 files

下一刻移除 pCloud 再重裝也是一樣,永遠都可以看到 pCloud app 很努力的在同步我剛在原處創建的 Cryptomator 加密庫,並且 pCloud 首頁永遠都是雜亂的 XD 

終於下定決心來找找,如何乾淨地移除 pCloud 設定檔,推論有一些 plist 紀錄著東西,也猜想 pCloud app 版本不同後,新舊版資料紀錄錯亂或是做了什麼相容架構,導致最新版刪不了舊版紀錄的資料,但又一直做相容架構,拿舊版的資料出來用。此時在新版 pCloud app 添加指定目錄同步時,會一直彈跳出不能重複設定的資訊(pCloud app UI 介面上可以看到,目前一條規則也沒有):Can not add new sync: Folder already syncing!

來個乾淨的刪除吧!

先把 pCloud app 從應用程式的目錄拖拉丟去垃圾桶:

% open /Applications 

接著檢查其他資料:

% sudo find /Library -iname "*pcloud*" 2>/dev/null
...
/Library/PrivilegedHelperTools/com.pcloud.pcloudfs.Mounter.Helper
/Library/Logs/DiagnosticReports/pCloud Drive_2023-##-##-#######_#####.diag
/Library/LaunchDaemons/com.pcloud.pcloudfs.Mounter.Helper.plist
...

% find ~/Library -iname "*pcloud*" 2>/dev/null
...
/Users/account/Library/WebKit/com.pcloud.pcloud.macos
/Users/account/Library/Preferences/com.pcloud.pcloud.macos.plist
/Users/account/Library/Application Scripts/com.pcloud.pcloud.macos.pCloudFinderExt
/Users/account/Library/HTTPStorages/com.pcloud.pcloud.macos.binarycookies
/Users/account/Library/Containers/com.pcloud.pcloud.macos.pCloudFinderExt
/Users/account/Library/Containers/com.pcloud.pcloud.macos.pCloudFinderExt/Data/Library/Application Scripts/com.pcloud.pcloud.macos.pCloudFinderExt
/Users/account/Library/Caches/com.pcloud.pcloud.macos

偷看 /Users/account/Library/Preferences/com.pcloud.pcloud.macos.plist 內容,他還記錄著 sync 目錄資訊。

最後就人工把以下的資料刪除:

/Library/PrivilegedHelperTools/com.pcloud.pcloudfs.Mounter.Helper
/Library/Logs/DiagnosticReports/pCloud Drive_2023-##-##-#######_#####.diag
/Library/LaunchDaemons/com.pcloud.pcloudfs.Mounter.Helper.plist
/Users/account/Library/WebKit/com.pcloud.pcloud.macos
/Users/account/Library/Application Scripts/com.pcloud.pcloud.macos.pCloudFinderExt
/Users/account/Library/HTTPStorages/com.pcloud.pcloud.macos.binarycookies
/Users/account/Library/Containers/com.pcloud.pcloud.macos.pCloudFinderExt
/Users/account/Library/Caches/com.pcloud.pcloud.macos
/Users/account/Library/Preferences/com.pcloud.pcloud.macos.plist

原本以為這樣就搞定了,殊不知裝完 pCloud app 啟動後,又發現繼續同步資料。最後想起一招:從 活動監視器 那邊看 pCloud app 開啟的檔案清單



就發現有一處是 ~/.pcloud ,把他刪掉後,終於正常了。

2016年2月20日 星期六

使用 VLC 動態調整字幕時間軸 (Sub sync: set bookmark first) @ Mac OS X 10.11.13

很多播放軟體都有提供延遲或增快字幕的播放機制,但很多都是預先要設定個秒數,不見得方便。最近使用 VLC 後,發現他有非常人性化的設置,當你要處理字幕跟影片的落差時,假設字幕跑得比較快,可以先用 Shift+J 快速鍵記錄某字幕出來的時間,接著當你聽到對應聲音的時間時,請用 Shift+H 記錄,接著再按 Shift + K 後,VLC 就自動幫你同步好了!實在方便啊,紀錄一下。

若字幕或聲音沒有都設置 bookmark 時,直接按 Shift + K 會得到:Sub sync: set bookmark first 訊息。

筆記:

  • Shift + H:定位 Audio 時間位置
  • Shift + J:定位 Subtitle 時間位置 
  • Shift + K:將 Audio 跟 Subtitle 時間同步

2015年9月27日 星期日

[GO] 使用 Go drive 同步資料至 Google Drive 空間 @ Ubuntu 14.04 64bit

之前默默地得到 Google for edu 的帳號,想說該善用一下空間。之前比較常用 Dropbox 的空間,所以一直沒善用 Google Drive ,但是埋在 Linode 1GB 機器上,常常覺得記憶體都被 Dropbox 吃光,這次就試試 Google drive 吧!有 1TB 的空間,就拿來備份服務產生的資料了 cc

接著,找了很久,才發現有一個用 Go 語言寫的 Google drive 指令,接著想說用 apt-get 安裝 go 語言,結果版本不夠新,又找了 gvm 來試試,總之,流程如下:
  1. 安裝 gvm
  2. 安裝編譯 golang 所需套件
  3. 安裝 drive
  4. 編輯 .bashrc 環境變數
  5. 初始化 google drive
  6. 上傳資料至 google drive
連續動作:

$ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
$ gvm install go1.5 --binary
$ vim .bashrc
export GOPATH="$HOME/go-package”
export PATH=$PATH:$GOPATH/bin
$ go get -u github.com/odeke-em/drive/cmd/drive
$ mkdir $HOME/gdrive
$ drive init $HOME/gdrive


未來在 $HOME/gdrive 建立完資料,可以用 drive push path 來進行上傳到 Google Drive。接著就偷懶把指令擺在 crontab 啦,要留意 gvm 的使用,如:

*/20    *       *       *       *       bash -c 'source $HOME/.gvm/scripts/gvm && gvm use go1.5 && cd $HOME/gdrive && drive push -no-prompt -quiet test_auto_upload_dir/‘ > /dev/null

同理,若真的要做到 sync 的話,可以再用 drive pull test_auto_upload_dir 來更新更動,而把 sync 動作切該成 drive push 跟 drive pull 也有好處,例如可製作永遠上傳至 google drive 的功能,同時也能定期刪掉已上傳過的資料!

2014年8月11日 星期一

AWS 筆記 - 透過 Script 半自動化處理 MySQL Replication Error

用了 AWS RDS 一陣子了,之前一直沒搞懂為何 call mysql.rds_skip_repl_error; 一次只能清一條 Error ,直到另一台 MySQL Slave Server 出錯,變成也要手動清除錯誤訊息時,才搞懂原理就是這樣,一次只能清一條。

所以,對於 MySQL Replication Error 不知不覺就生了兩種 script 來應付,一種是 RDS 當 MySQL Replication Slave 用的,另一個則是一般 MySQL Replication Slave Server 用的:

處理 AWS RDS MySQL Replication Slave Servers:

#!/bin/sh
a=0
while [ $a -lt 1000 ]
do
        check=`echo "SHOW SLAVE STATUS \G" | mysql -h YOUR_AWS_RDS_SERVER -u root -ppassword | grep "Last_SQL_Error:" | grep -c "Could not execute"`
        if [ $check -eq 0 ] ; then
                break
        fi
        echo "CALL mysql.rds_skip_repl_error;" | mysql -h YOUR_AWS_RDS_SERVER -u root -ppassword
        a=$(( $a + 1 ))
done


處理 MySQL Replication Slave Servers:

#!/bin/sh

a=0
while [ $a -lt 2000 ]
do
        check=`echo "SHOW SLAVE STATUS \G" | mysql -h YOUR_MYSQL_SLAVE_SERVER -u root -ppassword | grep "Last_SQL_Error:" | grep -c "Error "`
        if [ $check -eq 0 ] ; then
                break
        fi
        check=`echo "STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE;" | mysql -h localhost -u root -ppassword`
        a=$(( $a + 1 ))
        sleep 3
done


以上是用在 MySQL Server 彼此算異質系統,只能先透過這招頂替了。