Kita semua pernah mengalaminya: Anda perlu memuat turun sesuatu dengan cepat daripada pakej hosting kongsi yang murah (cth., daripada IONOS). git pull Anda mungkin ingin menjalankan program atau menggunakan pangkalan data, tetapi penyedia hosting anda tidak memberikan akses SSH – atau hanya dalam pelan yang lebih mahal. Selalunya, satu-satunya pilihan yang tinggal ialah proses memuat naik fail secara manual melalui FTP yang membosankan, yang menjadikan penggunaan tidak perlu rumit dan terdedah kepada ralat.
Satu penyelesaian yang mungkin adalah dengan memasang sistem fail melalui sshfs. Secara teorinya, ini kedengaran bagus: Anda memasang folder jauh secara setempat dan berfungsi seolah-olah fail tersebut berada pada mesin anda sendiri. Untuk melakukan ini, anda hanya perlu mencipta direktori setempat dan menyambungkannya ke pelayan melalui pengguna FTP/SSH. Arahan yang diperlukan untuk mewujudkan sambungan dan menyediakan Git untuk folder ini adalah seperti ini di Linux::
sudo apt-get install sshfs
mkdir /var/www/remote
cd /var/www/remote
sshfs username@your.host:/ -p 22 /var/www/remote
git config --global --add safe.directory /var/www/remote
git status
...
umount /var/www/remote
Masalahnya: Prestasinya teruk. Memandangkan Git menghadapi masalah dengan arahan seperti git status Apabila melakukan beribu-ribu operasi fail kecil, setiap satunya memerlukan akses rangkaian, seseorang sering menunggu beberapa minit untuk respons yang paling mudah sekalipun. Kerja produktif hampir mustahil dalam keadaan ini. Terutamanya dalam projek yang mempunyai pelbagai kebergantungan, terminal sering membeku sepenuhnya, memaksa pengguna yang kecewa untuk meninggalkan proses tersebut.
Pustaka seperti ftpsh wujud tepat untuk senario ini. Pustaka ini membolehkan anda melaksanakan arahan shell pada pelayan jauh yang hanya menawarkan akses (S)FTP dan HTTP. Caranya ialah skrip PHP dimuat naik buat sementara waktu, yang melaksanakan arahan yang diberikan dan mengembalikan output. Semua ini berlaku di latar belakang, tetapi terasa seperti shell sebenar.
Pemasangannya cepat dan mudah.:
mkdir ftpsh
cd ftpsh
wget -O ftpsh.sh https://raw.githubusercontent.com/vielhuber/ftpsh/main/ftpsh.sh
chmod +x ftpsh.sh
Seterusnya, kita cipta fail .env dengan data akses (S)FTP.:
HOST=your-server.com
PORT=22
USERNAME=your-username
PASSWORD=your-password
REMOTE_PATH="/"
WEB_URL="https://your-server.com"
Sekarang kita boleh melaksanakan sebarang arahan pada pelayan, dengan syarat alat tersebut tersedia dari jauh.:
ftpsh git status
ftpsh "mysqldump -h xxx --port 3306 -u xxx -p\"xxx\" --routines xxx" > dump.sql
Skrip memuat naik pekerja di latar belakang, melaksanakan arahan secara setempat pada pelayan (di mana ia pantas), dan mengembalikan hasilnya. Ini membolehkan automasi penggunaan, lambakan pangkalan data atau operasi Git yang cekap, walaupun pada persekitaran pengehosan terhad. Ia juga berintegrasi dengan lancar dengan syncdb untuk penyegerakan pangkalan data.