برنامج نصي Bash يستخدم الضفيرة لإرسال الملفات والمجلدات إلى مجلد مشترك بشكل عام nextcloud / owncloud.
المنطق هو
cloudsend
الأصول هنا، شكرًا لكل من ساهم في GIST الأصلي
تحقق أيضًا من تطبيق cloudmanager الخاص بي للحصول على عميل webdav التالي/owncloud الكامل.
قام Cloudsend v2 بتغيير طريقة عمل تحليل كلمة المرور.
استخدم Cloudsend 0.xx المعلمة -p
لكلمة مرور البيئة (تم تغييرها إلى -e
في الإصدار v2+).
الرجاء استخدام إما -e
OR -p
، ولكن ليس كليهما. سيتم استخدام آخر ما تم الاتصال به.
Env Pass > قم بتعيين المتغير CLOUDSEND_PASSWORD='MySecretPass'
واستخدم الخيار -e
Param Pass > أرسل كلمة المرور كمعلمة باستخدام -p
يمكنك استخدام حركات الإدخال (أحرف البدل) عن طريق ضبط الخيار -g
.
سيؤدي هذا إلى تجاهل التحقق من ملف الإدخال وتمرير الكرة إلى التجعيد لاستخدامها.
يجب عليك عدم إعادة تسمية الملفات عند التمرير، سيتم استخدام أسماء ملفات الإدخال.
يجب ألا ترسل المجلدات عند التنقل، يُسمح فقط بالملفات.
أمثلة الكرة الأرضية:
'{file1.txt,file2.txt,file3.txt}'
'img[1-100].png'
مزيد من المعلومات حول التألق
https://github.com/tavinus/cloudsend.sh/wiki/Input-Globbing
يمكنك إرسال المحتوى عبر الأنابيب باستخدام -
أو .
كاسم ملف الإدخال (مواصفات الضفيرة) .
يجب عليك تعيين اسم ملف الوجهة لاستخدام stdin كمدخل ( -r
).
من دليل الضفيرة:
استخدم اسم الملف -
(شرطة واحدة) لاستخدام stdin بدلاً من ملف معين.
بدلا من ذلك، اسم الملف .
(فترة واحدة) يمكن تحديدها بدلاً من -
للاستخدام
stdin في وضع عدم الحظر للسماح بقراءة مخرجات الخادم أثناء تحميل stdin.
من v2.2.0 يمكن ل cloudsend.sh
إرسال المجلدات. سوف يجتاز شجرة المجلدات وينشئها
كل مجلد وإرسال كل ملف. ما عليك سوى استخدام مسار المجلد كمدخل.
يؤدي هذا إلى إرسال كل ملف في مجلد Shell الحالي.
قم بتغيير ./
الأول لتغيير مجلد الإدخال ( على سبيل المثال. '/home/myname/myfolder'
)
-maxdepth 1
سوف يقرأ المجلد الحالي فقط، والمزيد من المستويات تتعمق، والضغط يمتد إلى جميع المستويات
find ./ -maxdegree 1 -type f -exec ./cloudsend.sh {} https://cloud.mydomain.tld/s/TxWdsNX2Ln3X5kxG -p yourPassword ;
يؤدي هذا إلى إرسال كل ملف داخل /home/myname/myfolder
، بما في ذلك جميع المجلدات الفرعية.
ابحث عن /home/myname/myfolder -type f -exec ./cloudsend.sh {} https://cloud.mydomain.tld/s/TxWdsNX2Ln3X5kxG -p yourPassword؛
يؤدي هذا إلى إرسال كرة قطرانية gziped لمجلد Shell الحالي.
القطران cf - "$(pwd)" | غزيب -9 -ج | ./cloudsend.sh - 'https://cloud.mydomain.tld/s/TxWdsNX2Ln3X5kxG' -r myfolder.tar.gz
يؤدي هذا إلى إرسال كرة قطرانية gzid من /home/myname/myfolder
.
القطران cf - /home/myname/myfolder | غزيب -9 -ج | ./cloudsend.sh - 'https://cloud.mydomain.tld/s/TxWdsNX2Ln3X5kxG' -r myfolder.tar.gz
يؤدي هذا إلى إرسال ملف مضغوط متكرر من /home/myname/myfolder
.
zip -q -r -9 - /home/myname/myfolder | ./cloudsend.sh - 'https://cloud.mydomain.tld/s/TxWdsNX2Ln3X5kxG' -r myfolder.zip
منذ الإصدار 2.3.2، يمكنك إنشاء مجلدات في الخادم البعيد باستخدام المعلمة -C|--mkdir
. يمكن أن يكون مجلدًا واحدًا أو شجرة.
ما عليك سوى تمرير المجلد المراد إنشاؤه كما لو كان الملف الذي يتم إرساله.
$ ./cloudsend.sh -C -p MyPassword 'A Folder' "https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY" Tavinus Cloud Sender v2.3.5 > Color mode OFF > Using password from Parameter > Makedir mode is ON ‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗ CREATING FOLDERS ON TARGET ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ A Folder > OK (created) ‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗ MAIN TARGET DOWNLOAD URL ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ Download URL: > https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY/download?path=/A Folder https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY/download?path=%2fA%20Folder Access URL: > https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY?path=/A Folder https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY?path=%2fA%20Folder ‗‗‗‗‗‗‗‗‗ SUMMARY ‾‾‾‾‾‾‾‾‾ Curl : NO Errors CurlExit : 0 WebDav : NO Errors Status : Makedir Completed Root : / Base : / Full : / Target : A Folder Type : Directory
منذ الإصدار 2.3.1 يمكنك حذف الملفات والمجلدات الموجودة على الخادم البعيد.
ما عليك سوى استخدام الخيار -D|--delete
وتمرير الملف/المجلد المراد حذفه كما لو كان الملف الذي يتم إرساله.
يقوم هذا المثال بحذف A Folder
من الخادم البعيد بكل مجلداته الفرعية وملفاته.
$ ./cloudsend.sh -D -p MyPassword 'A Folder' "https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY" Tavinus Cloud Sender v2.3.5 > Using password from Parameter > Delete mode is ON ‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗ DELETING TARGET ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ A Folder > OK (deleted) ‗‗‗‗‗‗‗‗‗ SUMMARY ‾‾‾‾‾‾‾‾‾ Curl : NO Errors CurlExit : 0 WebDav : NO Errors Status : Delete Completed Root : / Base : / Full : / Target : A Folder Type : Unknown
منذ الإصدار 2.3.2، يمكنك تعيين مجلد هدف للعمليات عن بعد باستخدام المعلمة -T|--target
. يمكن أن يكون مجلدًا واحدًا أو شجرة.
سيتم إنشاء الشجرة المستهدفة قبل تشغيل العمليات، إلا إذا كنت تقوم بتشغيل أمر الحذف.
ستستخدم جميع الأوامر المجلد الهدف كمجلد أساسي (حذف، إرسال، إنشاء مجلد، وما إلى ذلك).
$ ./cloudsend.sh -p MyPassword -T 'A Folder/ A Subfolder' ./README.md "https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY" Tavinus Cloud Sender v2.3.5 > Using password from Parameter > Base Target folder set to: "/A Folder/ A Subfolder" ‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗ CREATING BASE TARGET FOLDERS ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ A Folder > OK (created) A Folder/ A Subfolder > OK (created) ‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗ SENDING SINGLE FILE ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ README.md > ######################################################################### 100.0% ‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗ MAIN TARGET DOWNLOAD URL ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ Download URL: > https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY/download?path=A Folder/ A Subfolder&files=README.md https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY/download?path=A%20Folder%2f%20A%20Subfolder&files=README.md Access URL: > https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY?path=A Folder/ A Subfolder&files=README.md https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY?path=A%20Folder%2f%20A%20Subfolder&files=README.md ‗‗‗‗‗‗‗‗‗ SUMMARY ‾‾‾‾‾‾‾‾‾ Curl : NO Errors CurlExit : 0 WebDav : NO Errors Status : Send Completed Root : / Base : /A Folder/ A Subfolder Full : /A Folder/ A Subfolder Target : README.md Type : File
يدعم Cloudsend أيضًا قراءة المجلد الجذر من عنوان URL (إذا كان عنوان URL يرتبط بمجلد).
لن يحاول Cloudsend إنشاء هذا المجلد، إذ يجب أن يكون موجودًا بالفعل، ولكنه سيستخدمه كمجلد جذر أساسي لكل شيء، بما في ذلك الإعداد الأساسي --target
.
الروابط مع المجلدات لها صيغة https://cloud.mydomain.tld/index.php/s/H2Q3RHXZ4f974sY?path=my root
.
يعرّف هذا ?path=my root
'my root'
باعتباره المجلد الهدف الجذري.
في هذا المثال، كان "الجذر الخاص بي" موجودًا بالفعل على الخادم، وإلا فسنحصل على أخطاء
$ ./cloudsend.sh -p MyPass -T 'A Folder/A Subfolder' "../folder 1" "https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY?path=my root" Tavinus Cloud Sender v2.3.6 > Using password from Parameter > Base Target folder set to: "/A Folder/A Subfolder" > Root Target folder set from URL: "my root" ‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗ CREATING BASE TARGET FOLDERS ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ A Folder > OK (created) A Folder/A Subfolder > OK (created) ‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗ CREATING FOLDER TREE AT DESTINATION ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ folder 1 > OK (created) folder 1/folder 1-a > OK (created) folder 1/folder 1-a/folder 1 a 1 > OK (created) folder 1/folder 1-b > OK (created) ‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗ SENDING ALL FILES FROM FOLDER TREE ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ folder 1/file 1.txt > ######################################################################### 100.0% folder 1/file 2.txt > ######################################################################### 100.0% folder 1/file 3.txt > ######################################################################### 100.0% folder 1/folder 1-a/file 2 3.txt > ######################################################################### 100.0% folder 1/folder 1-a/folder 1 a 1/file 6.txt > ######################################################################### 100.0% folder 1/folder 1-b/file 5.txt > ######################################################################### 100.0% ‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗ MAIN TARGET DOWNLOAD URL ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ Download URL: > https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY/download?path=my root/A Folder/A Subfolder/folder 1 https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY/download?path=my%20root%2fA%20Folder%2fA%20Subfolder%2ffolder%201 Access URL: > https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY?path=my root/A Folder/A Subfolder/folder 1 https://cloud.mydomain.tld/index.php/s/H4Q3RHXZ4e974PY?path=my%20root%2fA%20Folder%2fA%20Subfolder%2ffolder%201 ‗‗‗‗‗‗‗‗‗ SUMMARY ‾‾‾‾‾‾‾‾‾ Curl : NO Errors CurlExit : 0 WebDav : NO Errors Status : Send Completed Root : /my root Base : /A Folder/A Subfolder Full : /my root/A Folder/A Subfolder Target : folder 1 Type : Directory
$ ./cloudsend --help Tavinus Cloud Sender v2.3.8 Parameters: -h | --help Print this help and exits -q | --quiet Disables verbose messages -V | --version Prints version and exits -N | --no-color Disables colored output -D | --delete Delete file/folder in remote share -T | --targetRebase work into a target folder (instead of root) -C | --mkdir Create a directory tree in the remote share -r | --rename Change the destination file name -g | --glob Disable input file checking to use curl globs -k | --insecure Uses curl with -k option (https insecure) -A | --user-agent Specify user agent to use with curl -A option -E | --referer Specify referer to use with curl -e option -l | --limit-rate Uses curl limit-rate (eg 100k, 1M) -a | --abort-on-errors Aborts on Webdav response errors -p | --password Uses as shared folder password -e | --envpass Uses env var $CLOUDSEND_PASSWORD as share password You can 'export CLOUDSEND_PASSWORD' at your system, or set it at the call Please remeber to also call -e to use the password set Use: ./cloudsend.sh [options] CLOUDSEND_PASSWORD='MySecretPass' ./cloudsend.sh -e [options] Passwords: Cloudsend 2 changed the way password works Cloudsend 0.x.x used the '-p' parameter for the Environment password (changed to -e in v2+) Please use EITHER -e OR -p, but not both. The last to be called will be used Env Pass > Set the variable CLOUDSEND_PASSWORD='MySecretPass' and use the option '-e' Param Pass > Send the password as a parameter with '-p ' Folders: Cloudsend 2.2.0 introduces folder tree sending. Just use a directory as . It will traverse all files and folders, create the needed folders and send all files. Each folder creation and file sending will require a curl call. Target Folder: Cloudsend 2.3.2 introduces the target folder setting. It will create the folder in the remote host and send all files and folders into it. It also works as a base folder for the other operations like deletion and folder creation. Accepts nested folders. ./cloudsend.sh -T 'f1/f2/f3' -p myPass 'folder|file' 'https://cloud.domain/index.php/s/vbi2za9esfrgvXC' Create Folder: Available since version 2.3.2. Just pass the folder name to be created as if it was the file/folder being sent and add the -C | --mkdir parameter. Runs recursively. ./cloudsend.sh -C -p myPass 'new folder/new2' 'https://cloud.domain/index.php/s/vbi2za9esfrgvXC' Delete: Available since version 2.3.1. Just pass the file/folder to be deleted as if it was the file/folder being sent and add the -D | --delete parameter. ./cloudsend.sh -D -p myPass 'folder/file' 'https://cloud.domain/index.php/s/vbi2za9esfrgvXC' Input Globbing: You can use input globbing (wildcards) by setting the -g option This will ignore input file checking and pass the glob to curl to be used You MUST NOT rename files when globbing, input file names will be used You MUST NOT send folders when globbing, only files are allowed Glob examples: '{file1.txt,file2.txt,file3.txt}' 'img[1-100].png' Send from stdin (pipe): You can send piped content by using - or . as the input file name (curl specs) You MUST set a destination file name to use stdin as input (-r ) Use the file name '-' (a single dash) to use stdin instead of a given file Alternately, the file name '.' (a single period) may be specified instead of '-' to use stdin in non-blocking mode to allow reading server output while stdin is being uploaded Examples: CLOUDSEND_PASSWORD='MySecretPass' ./cloudsend.sh -e './myfile.txt' 'https://cloud.mydomain.net/s/fLDzToZF4MLvG28' ./cloudsend.sh './myfile.txt' 'https://cloud.mydomain.net/s/fLDzToZF4MLvG28' ./cloudsend.sh 'my Folder' 'https://cloud.mydomain.net/s/fLDzToZF4MLvG28' ./cloudsend.sh -r 'RenamedFile.txt' './myfile.txt' 'https://cloud.mydomain.net/s/fLDzToZF4MLvG28' ./cloudsend.sh --limit-rate 200K -p 'MySecretPass' './myfile.txt' 'https://cloud.mydomain.net/s/fLDzToZF4MLvG28' ./cloudsend.sh -p 'MySecretPass' -r 'RenamedFile.txt' './myfile.txt' 'https://cloud.mydomain.net/s/fLDzToZF4MLvG28' ./cloudsend.sh -g -p 'MySecretPass' '{file1,file2,file3}' 'https://cloud.mydomain.net/s/fLDzToZF4MLvG28' cat file | ./cloudsend.sh - 'https://cloud.mydomain.net/s/fLDzToZF4MLvG28' -r destFileName
ما هو "https://cloud.mydomain.net/s/fLDzToZF4MLvG28"؟
ما هو "رابط المجلد"؟
من أين أحصل عليه؟
خصيصًا الجزء "s/fLDzToZF4MLvG28"؟
يجب عليك مشاركة مجلد قابل للكتابة واستخدام الرابط الذي تم إنشاؤه
من وثائق Nextcloud 21