12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570195711957219573195741957519576195771957819579195801958119582195831958419585195861958719588195891959019591195921959319594195951959619597195981959919600196011960219603196041960519606196071960819609196101961119612196131961419615196161961719618196191962019621196221962319624196251962619627196281962919630196311963219633196341963519636196371963819639196401964119642196431964419645196461964719648196491965019651196521965319654196551965619657196581965919660196611966219663196641966519666196671966819669196701967119672196731967419675196761967719678196791968019681196821968319684196851968619687196881968919690196911969219693196941969519696196971969819699197001970119702197031970419705197061970719708197091971019711197121971319714197151971619717197181971919720197211972219723197241972519726197271972819729197301973119732197331973419735197361973719738197391974019741197421974319744197451974619747197481974919750197511975219753197541975519756197571975819759197601976119762197631976419765197661976719768197691977019771197721977319774197751977619777197781977919780197811978219783197841978519786197871978819789197901979119792197931979419795197961979719798197991980019801198021980319804198051980619807198081980919810198111981219813198141981519816198171981819819198201982119822198231982419825198261982719828198291983019831198321983319834198351983619837198381983919840198411984219843198441984519846198471984819849198501985119852198531985419855198561985719858198591986019861198621986319864198651986619867198681986919870198711987219873198741987519876198771987819879198801988119882198831988419885198861988719888198891989019891198921989319894198951989619897198981989919900199011990219903199041990519906199071990819909199101991119912199131991419915199161991719918199191992019921199221992319924199251992619927199281992919930199311993219933199341993519936199371993819939199401994119942199431994419945199461994719948199491995019951199521995319954199551995619957199581995919960199611996219963199641996519966199671996819969199701997119972199731997419975199761997719978199791998019981199821998319984199851998619987199881998919990199911999219993199941999519996199971999819999200002000120002200032000420005200062000720008200092001020011200122001320014200152001620017200182001920020200212002220023200242002520026200272002820029200302003120032200332003420035200362003720038200392004020041200422004320044200452004620047200482004920050200512005220053200542005520056200572005820059200602006120062200632006420065200662006720068200692007020071200722007320074200752007620077200782007920080200812008220083200842008520086200872008820089200902009120092200932009420095200962009720098200992010020101201022010320104201052010620107201082010920110201112011220113201142011520116201172011820119201202012120122201232012420125201262012720128201292013020131201322013320134201352013620137201382013920140201412014220143201442014520146201472014820149201502015120152201532015420155201562015720158201592016020161201622016320164201652016620167201682016920170201712017220173201742017520176201772017820179201802018120182201832018420185201862018720188201892019020191201922019320194201952019620197201982019920200202012020220203202042020520206202072020820209202102021120212202132021420215202162021720218202192022020221202222022320224202252022620227202282022920230202312023220233202342023520236202372023820239202402024120242202432024420245202462024720248202492025020251202522025320254202552025620257202582025920260202612026220263202642026520266202672026820269202702027120272202732027420275202762027720278202792028020281202822028320284202852028620287202882028920290202912029220293202942029520296202972029820299203002030120302203032030420305203062030720308203092031020311203122031320314203152031620317203182031920320203212032220323203242032520326203272032820329203302033120332203332033420335203362033720338203392034020341203422034320344203452034620347203482034920350203512035220353203542035520356203572035820359203602036120362203632036420365203662036720368203692037020371203722037320374203752037620377203782037920380203812038220383203842038520386203872038820389203902039120392203932039420395203962039720398203992040020401204022040320404204052040620407204082040920410204112041220413204142041520416204172041820419204202042120422204232042420425204262042720428204292043020431204322043320434204352043620437204382043920440204412044220443204442044520446204472044820449204502045120452204532045420455204562045720458204592046020461204622046320464204652046620467204682046920470204712047220473204742047520476204772047820479204802048120482204832048420485204862048720488204892049020491204922049320494204952049620497204982049920500205012050220503205042050520506205072050820509205102051120512205132051420515205162051720518205192052020521205222052320524205252052620527205282052920530205312053220533205342053520536205372053820539205402054120542205432054420545205462054720548205492055020551205522055320554205552055620557205582055920560205612056220563205642056520566205672056820569205702057120572205732057420575205762057720578205792058020581205822058320584205852058620587205882058920590205912059220593205942059520596205972059820599206002060120602206032060420605206062060720608206092061020611206122061320614206152061620617206182061920620206212062220623206242062520626206272062820629206302063120632206332063420635206362063720638206392064020641206422064320644206452064620647206482064920650206512065220653206542065520656206572065820659206602066120662206632066420665206662066720668206692067020671206722067320674206752067620677206782067920680206812068220683206842068520686206872068820689206902069120692206932069420695206962069720698206992070020701207022070320704207052070620707207082070920710207112071220713207142071520716207172071820719207202072120722207232072420725207262072720728207292073020731207322073320734207352073620737207382073920740207412074220743207442074520746207472074820749207502075120752207532075420755207562075720758207592076020761207622076320764207652076620767207682076920770207712077220773207742077520776207772077820779207802078120782207832078420785207862078720788207892079020791207922079320794207952079620797207982079920800208012080220803208042080520806208072080820809208102081120812208132081420815208162081720818208192082020821208222082320824208252082620827208282082920830208312083220833208342083520836208372083820839208402084120842208432084420845208462084720848208492085020851208522085320854208552085620857208582085920860208612086220863208642086520866208672086820869208702087120872208732087420875208762087720878208792088020881208822088320884208852088620887208882088920890208912089220893208942089520896208972089820899209002090120902209032090420905209062090720908209092091020911209122091320914209152091620917209182091920920209212092220923209242092520926209272092820929209302093120932209332093420935209362093720938209392094020941209422094320944209452094620947209482094920950209512095220953209542095520956209572095820959209602096120962209632096420965209662096720968209692097020971209722097320974209752097620977209782097920980209812098220983209842098520986209872098820989209902099120992209932099420995209962099720998209992100021001210022100321004210052100621007210082100921010210112101221013210142101521016210172101821019210202102121022210232102421025210262102721028210292103021031210322103321034210352103621037210382103921040210412104221043210442104521046210472104821049210502105121052210532105421055210562105721058210592106021061210622106321064210652106621067210682106921070210712107221073210742107521076210772107821079210802108121082210832108421085210862108721088210892109021091210922109321094210952109621097210982109921100211012110221103211042110521106211072110821109211102111121112211132111421115211162111721118211192112021121211222112321124211252112621127211282112921130211312113221133211342113521136211372113821139211402114121142211432114421145211462114721148211492115021151211522115321154211552115621157211582115921160211612116221163211642116521166211672116821169211702117121172211732117421175211762117721178211792118021181211822118321184211852118621187211882118921190211912119221193211942119521196211972119821199212002120121202212032120421205212062120721208212092121021211212122121321214212152121621217212182121921220212212122221223212242122521226212272122821229212302123121232212332123421235212362123721238212392124021241212422124321244212452124621247212482124921250212512125221253212542125521256212572125821259212602126121262212632126421265212662126721268212692127021271212722127321274212752127621277212782127921280212812128221283212842128521286212872128821289212902129121292212932129421295212962129721298212992130021301213022130321304213052130621307213082130921310213112131221313213142131521316213172131821319213202132121322213232132421325213262132721328213292133021331213322133321334213352133621337213382133921340213412134221343213442134521346213472134821349213502135121352213532135421355213562135721358213592136021361213622136321364213652136621367213682136921370213712137221373213742137521376213772137821379213802138121382213832138421385213862138721388213892139021391213922139321394213952139621397213982139921400214012140221403214042140521406214072140821409214102141121412214132141421415214162141721418214192142021421214222142321424214252142621427214282142921430214312143221433214342143521436214372143821439214402144121442214432144421445214462144721448214492145021451214522145321454214552145621457214582145921460214612146221463214642146521466214672146821469214702147121472214732147421475214762147721478214792148021481214822148321484214852148621487214882148921490214912149221493214942149521496214972149821499215002150121502215032150421505215062150721508215092151021511215122151321514215152151621517215182151921520215212152221523215242152521526215272152821529215302153121532215332153421535215362153721538215392154021541215422154321544215452154621547215482154921550215512155221553215542155521556215572155821559215602156121562215632156421565215662156721568215692157021571215722157321574215752157621577215782157921580215812158221583215842158521586215872158821589215902159121592215932159421595215962159721598215992160021601216022160321604216052160621607216082160921610216112161221613216142161521616216172161821619216202162121622216232162421625216262162721628216292163021631216322163321634216352163621637216382163921640216412164221643216442164521646216472164821649216502165121652216532165421655216562165721658216592166021661216622166321664216652166621667216682166921670216712167221673216742167521676216772167821679216802168121682216832168421685216862168721688216892169021691216922169321694216952169621697216982169921700217012170221703217042170521706217072170821709217102171121712217132171421715217162171721718217192172021721217222172321724217252172621727217282172921730217312173221733217342173521736217372173821739217402174121742217432174421745217462174721748217492175021751217522175321754217552175621757217582175921760217612176221763217642176521766217672176821769217702177121772217732177421775217762177721778217792178021781217822178321784217852178621787217882178921790217912179221793217942179521796217972179821799218002180121802218032180421805218062180721808218092181021811218122181321814218152181621817218182181921820218212182221823218242182521826218272182821829218302183121832218332183421835218362183721838218392184021841218422184321844218452184621847218482184921850218512185221853218542185521856218572185821859218602186121862218632186421865218662186721868218692187021871218722187321874218752187621877218782187921880218812188221883218842188521886218872188821889218902189121892218932189421895218962189721898218992190021901219022190321904219052190621907219082190921910219112191221913219142191521916219172191821919219202192121922219232192421925219262192721928219292193021931219322193321934219352193621937219382193921940219412194221943219442194521946219472194821949219502195121952219532195421955219562195721958219592196021961219622196321964219652196621967219682196921970219712197221973219742197521976219772197821979219802198121982219832198421985219862198721988219892199021991219922199321994219952199621997219982199922000220012200222003220042200522006220072200822009220102201122012220132201422015220162201722018220192202022021220222202322024220252202622027220282202922030220312203222033220342203522036220372203822039220402204122042220432204422045220462204722048220492205022051220522205322054220552205622057220582205922060220612206222063220642206522066220672206822069220702207122072220732207422075220762207722078220792208022081220822208322084220852208622087220882208922090220912209222093220942209522096220972209822099221002210122102221032210422105221062210722108221092211022111221122211322114221152211622117221182211922120221212212222123221242212522126221272212822129221302213122132221332213422135221362213722138221392214022141221422214322144221452214622147221482214922150221512215222153221542215522156221572215822159221602216122162221632216422165221662216722168221692217022171221722217322174221752217622177221782217922180221812218222183221842218522186221872218822189221902219122192221932219422195221962219722198221992220022201222022220322204222052220622207222082220922210222112221222213222142221522216222172221822219222202222122222222232222422225222262222722228222292223022231222322223322234222352223622237222382223922240222412224222243222442224522246222472224822249222502225122252222532225422255222562225722258222592226022261222622226322264222652226622267222682226922270222712227222273222742227522276222772227822279222802228122282222832228422285222862228722288222892229022291222922229322294222952229622297222982229922300223012230222303223042230522306223072230822309223102231122312223132231422315223162231722318223192232022321223222232322324223252232622327223282232922330223312233222333223342233522336223372233822339223402234122342223432234422345223462234722348223492235022351223522235322354223552235622357223582235922360223612236222363223642236522366223672236822369223702237122372223732237422375223762237722378223792238022381223822238322384223852238622387223882238922390223912239222393223942239522396223972239822399224002240122402224032240422405224062240722408224092241022411224122241322414224152241622417224182241922420224212242222423224242242522426224272242822429224302243122432224332243422435224362243722438224392244022441224422244322444224452244622447224482244922450224512245222453224542245522456224572245822459224602246122462224632246422465224662246722468224692247022471224722247322474224752247622477224782247922480224812248222483224842248522486224872248822489224902249122492224932249422495224962249722498224992250022501225022250322504225052250622507225082250922510225112251222513225142251522516225172251822519225202252122522225232252422525225262252722528225292253022531225322253322534225352253622537225382253922540225412254222543225442254522546225472254822549225502255122552225532255422555225562255722558225592256022561225622256322564225652256622567225682256922570225712257222573225742257522576225772257822579225802258122582225832258422585225862258722588225892259022591225922259322594225952259622597225982259922600226012260222603226042260522606226072260822609226102261122612226132261422615226162261722618226192262022621226222262322624226252262622627226282262922630226312263222633226342263522636226372263822639226402264122642226432264422645226462264722648226492265022651226522265322654226552265622657226582265922660226612266222663226642266522666226672266822669226702267122672226732267422675226762267722678226792268022681226822268322684226852268622687226882268922690226912269222693226942269522696226972269822699227002270122702227032270422705227062270722708227092271022711227122271322714227152271622717227182271922720227212272222723227242272522726227272272822729227302273122732227332273422735227362273722738227392274022741227422274322744227452274622747227482274922750227512275222753227542275522756227572275822759227602276122762227632276422765227662276722768227692277022771227722277322774227752277622777227782277922780227812278222783227842278522786227872278822789227902279122792227932279422795227962279722798227992280022801228022280322804228052280622807228082280922810228112281222813228142281522816228172281822819228202282122822228232282422825228262282722828228292283022831228322283322834228352283622837228382283922840228412284222843228442284522846228472284822849228502285122852228532285422855228562285722858228592286022861228622286322864228652286622867228682286922870228712287222873228742287522876228772287822879228802288122882228832288422885228862288722888228892289022891228922289322894228952289622897228982289922900229012290222903229042290522906229072290822909229102291122912229132291422915229162291722918229192292022921229222292322924229252292622927229282292922930229312293222933229342293522936229372293822939229402294122942229432294422945229462294722948229492295022951229522295322954229552295622957229582295922960229612296222963229642296522966229672296822969229702297122972229732297422975229762297722978229792298022981229822298322984229852298622987229882298922990229912299222993229942299522996229972299822999230002300123002230032300423005230062300723008230092301023011230122301323014230152301623017230182301923020230212302223023230242302523026230272302823029230302303123032230332303423035230362303723038230392304023041230422304323044230452304623047230482304923050230512305223053230542305523056230572305823059230602306123062230632306423065230662306723068230692307023071230722307323074230752307623077230782307923080230812308223083230842308523086230872308823089230902309123092230932309423095230962309723098230992310023101231022310323104231052310623107231082310923110231112311223113231142311523116231172311823119231202312123122231232312423125231262312723128231292313023131231322313323134231352313623137231382313923140231412314223143231442314523146231472314823149231502315123152231532315423155231562315723158231592316023161231622316323164231652316623167231682316923170231712317223173231742317523176231772317823179231802318123182231832318423185231862318723188231892319023191231922319323194231952319623197231982319923200232012320223203232042320523206232072320823209232102321123212232132321423215232162321723218232192322023221232222322323224232252322623227232282322923230232312323223233232342323523236232372323823239232402324123242232432324423245232462324723248232492325023251232522325323254232552325623257232582325923260232612326223263232642326523266232672326823269232702327123272232732327423275232762327723278232792328023281232822328323284232852328623287232882328923290232912329223293232942329523296232972329823299233002330123302233032330423305233062330723308233092331023311233122331323314233152331623317233182331923320233212332223323233242332523326233272332823329233302333123332233332333423335233362333723338233392334023341233422334323344233452334623347233482334923350233512335223353233542335523356233572335823359233602336123362233632336423365233662336723368233692337023371233722337323374233752337623377233782337923380233812338223383233842338523386233872338823389233902339123392233932339423395233962339723398233992340023401234022340323404234052340623407234082340923410234112341223413234142341523416234172341823419234202342123422234232342423425234262342723428234292343023431234322343323434234352343623437234382343923440234412344223443234442344523446234472344823449234502345123452234532345423455234562345723458234592346023461234622346323464234652346623467234682346923470234712347223473234742347523476234772347823479234802348123482234832348423485234862348723488234892349023491234922349323494234952349623497234982349923500235012350223503235042350523506235072350823509235102351123512235132351423515235162351723518235192352023521235222352323524235252352623527235282352923530235312353223533235342353523536235372353823539235402354123542235432354423545235462354723548235492355023551235522355323554235552355623557235582355923560235612356223563235642356523566235672356823569235702357123572235732357423575235762357723578235792358023581235822358323584235852358623587235882358923590235912359223593235942359523596235972359823599236002360123602236032360423605236062360723608236092361023611236122361323614236152361623617236182361923620236212362223623236242362523626236272362823629236302363123632236332363423635236362363723638236392364023641236422364323644236452364623647236482364923650236512365223653236542365523656236572365823659236602366123662236632366423665236662366723668236692367023671236722367323674236752367623677236782367923680236812368223683236842368523686236872368823689236902369123692236932369423695236962369723698236992370023701237022370323704237052370623707237082370923710237112371223713237142371523716237172371823719237202372123722237232372423725237262372723728237292373023731237322373323734237352373623737237382373923740237412374223743237442374523746237472374823749237502375123752237532375423755237562375723758237592376023761237622376323764237652376623767237682376923770237712377223773237742377523776237772377823779237802378123782237832378423785237862378723788237892379023791237922379323794237952379623797237982379923800238012380223803238042380523806238072380823809238102381123812238132381423815238162381723818238192382023821238222382323824238252382623827238282382923830238312383223833238342383523836238372383823839238402384123842238432384423845238462384723848238492385023851238522385323854238552385623857238582385923860238612386223863238642386523866238672386823869238702387123872238732387423875238762387723878238792388023881238822388323884238852388623887238882388923890238912389223893238942389523896238972389823899239002390123902239032390423905239062390723908239092391023911239122391323914239152391623917239182391923920239212392223923239242392523926239272392823929239302393123932239332393423935239362393723938239392394023941239422394323944239452394623947239482394923950239512395223953239542395523956239572395823959239602396123962239632396423965239662396723968239692397023971239722397323974239752397623977239782397923980239812398223983239842398523986239872398823989239902399123992239932399423995239962399723998239992400024001240022400324004240052400624007240082400924010240112401224013240142401524016240172401824019240202402124022240232402424025240262402724028240292403024031240322403324034240352403624037240382403924040240412404224043240442404524046240472404824049240502405124052240532405424055240562405724058240592406024061240622406324064240652406624067240682406924070240712407224073240742407524076240772407824079240802408124082240832408424085240862408724088240892409024091240922409324094240952409624097240982409924100241012410224103241042410524106241072410824109241102411124112241132411424115241162411724118241192412024121241222412324124241252412624127241282412924130241312413224133241342413524136241372413824139241402414124142241432414424145241462414724148241492415024151241522415324154241552415624157241582415924160241612416224163241642416524166241672416824169241702417124172241732417424175241762417724178241792418024181241822418324184241852418624187241882418924190241912419224193241942419524196241972419824199242002420124202242032420424205242062420724208242092421024211242122421324214242152421624217242182421924220242212422224223242242422524226242272422824229242302423124232242332423424235242362423724238242392424024241242422424324244242452424624247242482424924250242512425224253242542425524256242572425824259242602426124262242632426424265242662426724268242692427024271242722427324274242752427624277242782427924280242812428224283242842428524286242872428824289242902429124292242932429424295242962429724298242992430024301243022430324304243052430624307243082430924310243112431224313243142431524316243172431824319243202432124322243232432424325243262432724328243292433024331243322433324334243352433624337243382433924340243412434224343243442434524346243472434824349243502435124352243532435424355243562435724358 |
- rclone(1) User Manual
- Nick Craig-Wood
- Feb 01, 2020
- RCLONE - RSYNC FOR CLOUD STORAGE
- Rclone is a command line program to sync files and directories to and
- from:
- - 1Fichier
- - Alibaba Cloud (Aliyun) Object Storage System (OSS)
- - Amazon Drive (See note)
- - Amazon S3
- - Backblaze B2
- - Box
- - Ceph
- - Citrix ShareFile
- - C14
- - DigitalOcean Spaces
- - Dreamhost
- - Dropbox
- - FTP
- - Google Cloud Storage
- - Google Drive
- - Google Photos
- - HTTP
- - Hubic
- - Jottacloud
- - IBM COS S3
- - Koofr
- - Mail.ru Cloud
- - Memset Memstore
- - Mega
- - Memory
- - Microsoft Azure Blob Storage
- - Microsoft OneDrive
- - Minio
- - Nextcloud
- - OVH
- - OpenDrive
- - Openstack Swift
- - Oracle Cloud Storage
- - ownCloud
- - pCloud
- - premiumize.me
- - put.io
- - QingStor
- - Rackspace Cloud Files
- - rsync.net
- - Scaleway
- - SFTP
- - SugarSync
- - Wasabi
- - WebDAV
- - Yandex Disk
- - The local filesystem
- Features
- - MD5/SHA1 hashes checked at all times for file integrity
- - Timestamps preserved on files
- - Partial syncs supported on a whole file basis
- - Copy mode to just copy new/changed files
- - Sync (one way) mode to make a directory identical
- - Check mode to check for file hash equality
- - Can sync to and from network, eg two different cloud accounts
- - Encryption backend
- - Cache backend
- - Chunking backend
- - Union backend
- - Optional FUSE mount (rclone mount)
- - Multi-threaded downloads to local disk
- - Can serve local or remote files over HTTP/WebDav/FTP/SFTP/dlna
- - Experimental Web based GUI
- Links
- - Home page
- - GitHub project page for source and bug tracker
- - Rclone Forum
- - Downloads
- INSTALL
- Rclone is a Go program and comes as a single binary file.
- Quickstart
- - Download the relevant binary.
- - Extract the rclone or rclone.exe binary from the archive
- - Run rclone config to setup. See rclone config docs for more details.
- See below for some expanded Linux / macOS instructions.
- See the Usage section of the docs for how to use rclone, or run
- rclone -h.
- Script installation
- To install rclone on Linux/macOS/BSD systems, run:
- curl https://rclone.org/install.sh | sudo bash
- For beta installation, run:
- curl https://rclone.org/install.sh | sudo bash -s beta
- Note that this script checks the version of rclone installed first and
- won’t re-download if not needed.
- Linux installation from precompiled binary
- Fetch and unpack
- curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
- unzip rclone-current-linux-amd64.zip
- cd rclone-*-linux-amd64
- Copy binary file
- sudo cp rclone /usr/bin/
- sudo chown root:root /usr/bin/rclone
- sudo chmod 755 /usr/bin/rclone
- Install manpage
- sudo mkdir -p /usr/local/share/man/man1
- sudo cp rclone.1 /usr/local/share/man/man1/
- sudo mandb
- Run rclone config to setup. See rclone config docs for more details.
- rclone config
- macOS installation with brew
- brew install rclone
- macOS installation from precompiled binary, using curl
- To avoid problems with macOS gatekeeper enforcing the binary to be
- signed and notarized it is enough to download with curl.
- Download the latest version of rclone.
- cd && curl -O https://downloads.rclone.org/rclone-current-osx-amd64.zip
- Unzip the download and cd to the extracted folder.
- unzip -a rclone-current-osx-amd64.zip && cd rclone-*-osx-amd64
- Move rclone to your $PATH. You will be prompted for your password.
- sudo mkdir -p /usr/local/bin
- sudo mv rclone /usr/local/bin/
- (the mkdir command is safe to run, even if the directory already
- exists).
- Remove the leftover files.
- cd .. && rm -rf rclone-*-osx-amd64 rclone-current-osx-amd64.zip
- Run rclone config to setup. See rclone config docs for more details.
- rclone config
- macOS installation from precompiled binary, using a web browser
- When downloading a binary with a web browser, the browser will set the
- macOS gatekeeper quarantine attribute. Starting from Catalina, when
- attempting to run rclone, a pop-up will appear saying:
- “rclone” cannot be opened because the developer cannot be verified.
- macOS cannot verify that this app is free from malware.
- The simplest fix is to run
- xattr -d com.apple.quarantine rclone
- Install with docker
- The rclone maintains a docker image for rclone. These images are
- autobuilt by docker hub from the rclone source based on a minimal Alpine
- linux image.
- The :latest tag will always point to the latest stable release. You can
- use the :beta tag to get the latest build from master. You can also use
- version tags, eg :1.49.1, :1.49 or :1.
- $ docker pull rclone/rclone:latest
- latest: Pulling from rclone/rclone
- Digest: sha256:0e0ced72671989bb837fea8e88578b3fc48371aa45d209663683e24cfdaa0e11
- ...
- $ docker run --rm rclone/rclone:latest version
- rclone v1.49.1
- - os/arch: linux/amd64
- - go version: go1.12.9
- There are a few command line options to consider when starting an rclone
- Docker container from the rclone image.
- - You need to mount the host rclone config dir at /config/rclone into
- the Docker container. Due to the fact that rclone updates tokens
- inside its config file, and that the update process involves a file
- rename, you need to mount the whole host rclone config dir, not just
- the single host rclone config file.
- - You need to mount a host data dir at /data into the Docker
- container.
- - By default, the rclone binary inside a Docker container runs with
- UID=0 (root). As a result, all files created in a run will have
- UID=0. If your config and data files reside on the host with a
- non-root UID:GID, you need to pass these on the container start
- command line.
- - It is possible to use rclone mount inside a userspace Docker
- container, and expose the resulting fuse mount to the host. The
- exact docker run options to do that might vary slightly between
- hosts. See, e.g. the discussion in this thread.
- You also need to mount the host /etc/passwd and /etc/group for fuse
- to work inside the container.
- Here are some commands tested on an Ubuntu 18.04.3 host:
- # config on host at ~/.config/rclone/rclone.conf
- # data on host at ~/data
- # make sure the config is ok by listing the remotes
- docker run --rm \
- --volume ~/.config/rclone:/config/rclone \
- --volume ~/data:/data:shared \
- --user $(id -u):$(id -g) \
- rclone/rclone \
- listremotes
- # perform mount inside Docker container, expose result to host
- mkdir -p ~/data/mount
- docker run --rm \
- --volume ~/.config/rclone:/config/rclone \
- --volume ~/data:/data:shared \
- --user $(id -u):$(id -g) \
- --volume /etc/passwd:/etc/passwd:ro --volume /etc/group:/etc/group:ro \
- --device /dev/fuse --cap-add SYS_ADMIN --security-opt apparmor:unconfined \
- rclone/rclone \
- mount dropbox:Photos /data/mount &
- ls ~/data/mount
- kill %1
- Install from source
- Make sure you have at least Go 1.7 installed. Download go if necessary.
- The latest release is recommended. Then
- git clone https://github.com/rclone/rclone.git
- cd rclone
- go build
- ./rclone version
- You can also build and install rclone in the GOPATH (which defaults to
- ~/go) with:
- go get -u -v github.com/rclone/rclone
- and this will build the binary in $GOPATH/bin (~/go/bin/rclone by
- default) after downloading the source to
- $GOPATH/src/github.com/rclone/rclone (~/go/src/github.com/rclone/rclone
- by default).
- Installation with Ansible
- This can be done with Stefan Weichinger’s ansible role.
- Instructions
- 1. git clone https://github.com/stefangweichinger/ansible-rclone.git
- into your local roles-directory
- 2. add the role to the hosts you want rclone installed to:
- - hosts: rclone-hosts
- roles:
- - rclone
- Configure
- First, you’ll need to configure rclone. As the object storage systems
- have quite complicated authentication these are kept in a config file.
- (See the --config entry for how to find the config file and choose its
- location.)
- The easiest way to make the config is to run rclone with the config
- option:
- rclone config
- See the following for detailed instructions for
- - 1Fichier
- - Alias
- - Amazon Drive
- - Amazon S3
- - Backblaze B2
- - Box
- - Cache
- - Chunker - transparently splits large files for other remotes
- - Citrix ShareFile
- - Crypt - to encrypt other remotes
- - DigitalOcean Spaces
- - Dropbox
- - FTP
- - Google Cloud Storage
- - Google Drive
- - Google Photos
- - HTTP
- - Hubic
- - Jottacloud / GetSky.no
- - Koofr
- - Mail.ru Cloud
- - Mega
- - Memory
- - Microsoft Azure Blob Storage
- - Microsoft OneDrive
- - Openstack Swift / Rackspace Cloudfiles / Memset Memstore
- - OpenDrive
- - Pcloud
- - premiumize.me
- - put.io
- - QingStor
- - SFTP
- - SugarSync
- - Union
- - WebDAV
- - Yandex Disk
- - The local filesystem
- Usage
- Rclone syncs a directory tree from one storage system to another.
- Its syntax is like this
- Syntax: [options] subcommand <parameters> <parameters...>
- Source and destination paths are specified by the name you gave the
- storage system in the config file then the sub path, eg “drive:myfolder”
- to look at “myfolder” in Google drive.
- You can define as many storage paths as you like in the config file.
- Subcommands
- rclone uses a system of subcommands. For example
- rclone ls remote:path # lists a remote
- rclone copy /local/path remote:path # copies /local/path to the remote
- rclone sync /local/path remote:path # syncs /local/path to the remote
- rclone config
- Enter an interactive configuration session.
- Synopsis
- Enter an interactive configuration session where you can setup new
- remotes and manage existing ones. You may also set or remove a password
- to protect your configuration.
- rclone config [flags]
- Options
- -h, --help help for config
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- - rclone config create - Create a new remote with name, type and
- options.
- - rclone config delete - Delete an existing remote .
- - rclone config disconnect - Disconnects user from remote
- - rclone config dump - Dump the config file as JSON.
- - rclone config edit - Enter an interactive configuration session.
- - rclone config file - Show path of configuration file in use.
- - rclone config password - Update password in an existing remote.
- - rclone config providers - List in JSON format all the providers and
- options.
- - rclone config reconnect - Re-authenticates user with remote.
- - rclone config show - Print (decrypted) config file, or the config
- for a single remote.
- - rclone config update - Update options in an existing remote.
- - rclone config userinfo - Prints info about logged in user of remote.
- rclone copy
- Copy files from source to dest, skipping already copied
- Synopsis
- Copy the source to the destination. Doesn’t transfer unchanged files,
- testing by size and modification time or MD5SUM. Doesn’t delete files
- from the destination.
- Note that it is always the contents of the directory that is synced, not
- the directory so when source:path is a directory, it’s the contents of
- source:path that are copied, not the directory name and contents.
- If dest:path doesn’t exist, it is created and the source:path contents
- go there.
- For example
- rclone copy source:sourcepath dest:destpath
- Let’s say there are two files in sourcepath
- sourcepath/one.txt
- sourcepath/two.txt
- This copies them to
- destpath/one.txt
- destpath/two.txt
- Not to
- destpath/sourcepath/one.txt
- destpath/sourcepath/two.txt
- If you are familiar with rsync, rclone always works as if you had
- written a trailing / - meaning “copy the contents of this directory”.
- This applies to all commands and whether you are talking about the
- source or destination.
- See the –no-traverse option for controlling whether rclone lists the
- destination directory or not. Supplying this option when copying a small
- number of files into a large destination can speed transfers up greatly.
- For example, if you have many files in /path/to/src but only a few of
- them change every day, you can to copy all the files which have changed
- recently very efficiently like this:
- rclone copy --max-age 24h --no-traverse /path/to/src remote:
- NOTE: Use the -P/--progress flag to view real-time transfer statistics
- rclone copy source:path dest:path [flags]
- Options
- --create-empty-src-dirs Create empty source dirs on destination after copy
- -h, --help help for copy
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone sync
- Make source and dest identical, modifying destination only.
- Synopsis
- Sync the source to the destination, changing the destination only.
- Doesn’t transfer unchanged files, testing by size and modification time
- or MD5SUM. Destination is updated to match source, including deleting
- files if necessary.
- IMPORTANT: Since this can cause data loss, test first with the --dry-run
- flag to see exactly what would be copied and deleted.
- Note that files in the destination won’t be deleted if there were any
- errors at any point.
- It is always the contents of the directory that is synced, not the
- directory so when source:path is a directory, it’s the contents of
- source:path that are copied, not the directory name and contents. See
- extended explanation in the copy command above if unsure.
- If dest:path doesn’t exist, it is created and the source:path contents
- go there.
- NOTE: Use the -P/--progress flag to view real-time transfer statistics
- rclone sync source:path dest:path [flags]
- Options
- --create-empty-src-dirs Create empty source dirs on destination after sync
- -h, --help help for sync
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone move
- Move files from source to dest.
- Synopsis
- Moves the contents of the source directory to the destination directory.
- Rclone will error if the source and destination overlap and the remote
- does not support a server side directory move operation.
- If no filters are in use and if possible this will server side move
- source:path into dest:path. After this source:path will no longer longer
- exist.
- Otherwise for each file in source:path selected by the filters (if any)
- this will move it into dest:path. If possible a server side move will be
- used, otherwise it will copy it (server side if possible) into dest:path
- then delete the original (if no errors on copy) in source:path.
- If you want to delete empty source directories after move, use the
- –delete-empty-src-dirs flag.
- See the –no-traverse option for controlling whether rclone lists the
- destination directory or not. Supplying this option when moving a small
- number of files into a large destination can speed transfers up greatly.
- IMPORTANT: Since this can cause data loss, test first with the –dry-run
- flag.
- NOTE: Use the -P/--progress flag to view real-time transfer statistics.
- rclone move source:path dest:path [flags]
- Options
- --create-empty-src-dirs Create empty source dirs on destination after move
- --delete-empty-src-dirs Delete empty source dirs after move
- -h, --help help for move
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone delete
- Remove the contents of path.
- Synopsis
- Remove the files in path. Unlike purge it obeys include/exclude filters
- so can be used to selectively delete files.
- rclone delete only deletes objects but leaves the directory structure
- alone. If you want to delete a directory and all of its contents use
- rclone purge
- Eg delete all files bigger than 100MBytes
- Check what would be deleted first (use either)
- rclone --min-size 100M lsl remote:path
- rclone --dry-run --min-size 100M delete remote:path
- Then delete
- rclone --min-size 100M delete remote:path
- That reads “delete everything with a minimum size of 100 MB”, hence
- delete all files bigger than 100MBytes.
- rclone delete remote:path [flags]
- Options
- -h, --help help for delete
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone purge
- Remove the path and all of its contents.
- Synopsis
- Remove the path and all of its contents. Note that this does not obey
- include/exclude filters - everything will be removed. Use delete if you
- want to selectively delete files.
- rclone purge remote:path [flags]
- Options
- -h, --help help for purge
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone mkdir
- Make the path if it doesn’t already exist.
- Synopsis
- Make the path if it doesn’t already exist.
- rclone mkdir remote:path [flags]
- Options
- -h, --help help for mkdir
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone rmdir
- Remove the path if empty.
- Synopsis
- Remove the path. Note that you can’t remove a path with objects in it,
- use purge for that.
- rclone rmdir remote:path [flags]
- Options
- -h, --help help for rmdir
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone check
- Checks the files in the source and destination match.
- Synopsis
- Checks the files in the source and destination match. It compares sizes
- and hashes (MD5 or SHA1) and logs a report of files which don’t match.
- It doesn’t alter the source or destination.
- If you supply the –size-only flag, it will only compare the sizes not
- the hashes as well. Use this for a quick check.
- If you supply the –download flag, it will download the data from both
- remotes and check them against each other on the fly. This can be useful
- for remotes that don’t support hashes or if you really want to check all
- the data.
- If you supply the –one-way flag, it will only check that files in source
- match the files in destination, not the other way around. Meaning extra
- files in destination that are not in the source will not trigger an
- error.
- rclone check source:path dest:path [flags]
- Options
- --download Check by downloading rather than with hash.
- -h, --help help for check
- --one-way Check one way only, source files must exist on remote
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone ls
- List the objects in the path with size and path.
- Synopsis
- Lists the objects in the source path to standard output in a human
- readable format with size and path. Recurses by default.
- Eg
- $ rclone ls swift:bucket
- 60295 bevajer5jef
- 90613 canole
- 94467 diwogej7
- 37600 fubuwic
- Any of the filtering options can be applied to this command.
- There are several related list commands
- - ls to list size and path of objects only
- - lsl to list modification time, size and path of objects only
- - lsd to list directories only
- - lsf to list objects and directories in easy to parse format
- - lsjson to list objects and directories in JSON format
- ls,lsl,lsd are designed to be human readable. lsf is designed to be
- human and machine readable. lsjson is designed to be machine readable.
- Note that ls and lsl recurse by default - use “–max-depth 1” to stop the
- recursion.
- The other list commands lsd,lsf,lsjson do not recurse by default - use
- “-R” to make them recurse.
- Listing a non existent directory will produce an error except for
- remotes which can’t have empty directories (eg s3, swift, gcs, etc - the
- bucket based remotes).
- rclone ls remote:path [flags]
- Options
- -h, --help help for ls
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone lsd
- List all directories/containers/buckets in the path.
- Synopsis
- Lists the directories in the source path to standard output. Does not
- recurse by default. Use the -R flag to recurse.
- This command lists the total size of the directory (if known, -1 if
- not), the modification time (if known, the current time if not), the
- number of objects in the directory (if known, -1 if not) and the name of
- the directory, Eg
- $ rclone lsd swift:
- 494000 2018-04-26 08:43:20 10000 10000files
- 65 2018-04-26 08:43:20 1 1File
- Or
- $ rclone lsd drive:test
- -1 2016-10-17 17:41:53 -1 1000files
- -1 2017-01-03 14:40:54 -1 2500files
- -1 2017-07-08 14:39:28 -1 4000files
- If you just want the directory names use “rclone lsf –dirs-only”.
- Any of the filtering options can be applied to this command.
- There are several related list commands
- - ls to list size and path of objects only
- - lsl to list modification time, size and path of objects only
- - lsd to list directories only
- - lsf to list objects and directories in easy to parse format
- - lsjson to list objects and directories in JSON format
- ls,lsl,lsd are designed to be human readable. lsf is designed to be
- human and machine readable. lsjson is designed to be machine readable.
- Note that ls and lsl recurse by default - use “–max-depth 1” to stop the
- recursion.
- The other list commands lsd,lsf,lsjson do not recurse by default - use
- “-R” to make them recurse.
- Listing a non existent directory will produce an error except for
- remotes which can’t have empty directories (eg s3, swift, gcs, etc - the
- bucket based remotes).
- rclone lsd remote:path [flags]
- Options
- -h, --help help for lsd
- -R, --recursive Recurse into the listing.
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone lsl
- List the objects in path with modification time, size and path.
- Synopsis
- Lists the objects in the source path to standard output in a human
- readable format with modification time, size and path. Recurses by
- default.
- Eg
- $ rclone lsl swift:bucket
- 60295 2016-06-25 18:55:41.062626927 bevajer5jef
- 90613 2016-06-25 18:55:43.302607074 canole
- 94467 2016-06-25 18:55:43.046609333 diwogej7
- 37600 2016-06-25 18:55:40.814629136 fubuwic
- Any of the filtering options can be applied to this command.
- There are several related list commands
- - ls to list size and path of objects only
- - lsl to list modification time, size and path of objects only
- - lsd to list directories only
- - lsf to list objects and directories in easy to parse format
- - lsjson to list objects and directories in JSON format
- ls,lsl,lsd are designed to be human readable. lsf is designed to be
- human and machine readable. lsjson is designed to be machine readable.
- Note that ls and lsl recurse by default - use “–max-depth 1” to stop the
- recursion.
- The other list commands lsd,lsf,lsjson do not recurse by default - use
- “-R” to make them recurse.
- Listing a non existent directory will produce an error except for
- remotes which can’t have empty directories (eg s3, swift, gcs, etc - the
- bucket based remotes).
- rclone lsl remote:path [flags]
- Options
- -h, --help help for lsl
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone md5sum
- Produces an md5sum file for all the objects in the path.
- Synopsis
- Produces an md5sum file for all the objects in the path. This is in the
- same format as the standard md5sum tool produces.
- rclone md5sum remote:path [flags]
- Options
- -h, --help help for md5sum
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone sha1sum
- Produces an sha1sum file for all the objects in the path.
- Synopsis
- Produces an sha1sum file for all the objects in the path. This is in the
- same format as the standard sha1sum tool produces.
- rclone sha1sum remote:path [flags]
- Options
- -h, --help help for sha1sum
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone size
- Prints the total size and number of objects in remote:path.
- Synopsis
- Prints the total size and number of objects in remote:path.
- rclone size remote:path [flags]
- Options
- -h, --help help for size
- --json format output as JSON
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone version
- Show the version number.
- Synopsis
- Show the version number, the go version and the architecture.
- Eg
- $ rclone version
- rclone v1.41
- - os/arch: linux/amd64
- - go version: go1.10
- If you supply the –check flag, then it will do an online check to
- compare your version with the latest release and the latest beta.
- $ rclone version --check
- yours: 1.42.0.6
- latest: 1.42 (released 2018-06-16)
- beta: 1.42.0.5 (released 2018-06-17)
- Or
- $ rclone version --check
- yours: 1.41
- latest: 1.42 (released 2018-06-16)
- upgrade: https://downloads.rclone.org/v1.42
- beta: 1.42.0.5 (released 2018-06-17)
- upgrade: https://beta.rclone.org/v1.42-005-g56e1e820
- rclone version [flags]
- Options
- --check Check for new version.
- -h, --help help for version
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone cleanup
- Clean up the remote if possible
- Synopsis
- Clean up the remote if possible. Empty the trash or delete old file
- versions. Not supported by all remotes.
- rclone cleanup remote:path [flags]
- Options
- -h, --help help for cleanup
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone dedupe
- Interactively find duplicate files and delete/rename them.
- Synopsis
- By default dedupe interactively finds duplicate files and offers to
- delete all but one or rename them to be different. Only useful with
- Google Drive which can have duplicate file names.
- In the first pass it will merge directories with the same name. It will
- do this iteratively until all the identical directories have been
- merged.
- The dedupe command will delete all but one of any identical (same
- md5sum) files it finds without confirmation. This means that for most
- duplicated files the dedupe command will not be interactive. You can use
- --dry-run to see what would happen without doing anything.
- Here is an example run.
- Before - with duplicates
- $ rclone lsl drive:dupes
- 6048320 2016-03-05 16:23:16.798000000 one.txt
- 6048320 2016-03-05 16:23:11.775000000 one.txt
- 564374 2016-03-05 16:23:06.731000000 one.txt
- 6048320 2016-03-05 16:18:26.092000000 one.txt
- 6048320 2016-03-05 16:22:46.185000000 two.txt
- 1744073 2016-03-05 16:22:38.104000000 two.txt
- 564374 2016-03-05 16:22:52.118000000 two.txt
- Now the dedupe session
- $ rclone dedupe drive:dupes
- 2016/03/05 16:24:37 Google drive root 'dupes': Looking for duplicates using interactive mode.
- one.txt: Found 4 duplicates - deleting identical copies
- one.txt: Deleting 2/3 identical duplicates (md5sum "1eedaa9fe86fd4b8632e2ac549403b36")
- one.txt: 2 duplicates remain
- 1: 6048320 bytes, 2016-03-05 16:23:16.798000000, md5sum 1eedaa9fe86fd4b8632e2ac549403b36
- 2: 564374 bytes, 2016-03-05 16:23:06.731000000, md5sum 7594e7dc9fc28f727c42ee3e0749de81
- s) Skip and do nothing
- k) Keep just one (choose which in next step)
- r) Rename all to be different (by changing file.jpg to file-1.jpg)
- s/k/r> k
- Enter the number of the file to keep> 1
- one.txt: Deleted 1 extra copies
- two.txt: Found 3 duplicates - deleting identical copies
- two.txt: 3 duplicates remain
- 1: 564374 bytes, 2016-03-05 16:22:52.118000000, md5sum 7594e7dc9fc28f727c42ee3e0749de81
- 2: 6048320 bytes, 2016-03-05 16:22:46.185000000, md5sum 1eedaa9fe86fd4b8632e2ac549403b36
- 3: 1744073 bytes, 2016-03-05 16:22:38.104000000, md5sum 851957f7fb6f0bc4ce76be966d336802
- s) Skip and do nothing
- k) Keep just one (choose which in next step)
- r) Rename all to be different (by changing file.jpg to file-1.jpg)
- s/k/r> r
- two-1.txt: renamed from: two.txt
- two-2.txt: renamed from: two.txt
- two-3.txt: renamed from: two.txt
- The result being
- $ rclone lsl drive:dupes
- 6048320 2016-03-05 16:23:16.798000000 one.txt
- 564374 2016-03-05 16:22:52.118000000 two-1.txt
- 6048320 2016-03-05 16:22:46.185000000 two-2.txt
- 1744073 2016-03-05 16:22:38.104000000 two-3.txt
- Dedupe can be run non interactively using the --dedupe-mode flag or by
- using an extra parameter with the same value
- - --dedupe-mode interactive - interactive as above.
- - --dedupe-mode skip - removes identical files then skips anything
- left.
- - --dedupe-mode first - removes identical files then keeps the first
- one.
- - --dedupe-mode newest - removes identical files then keeps the newest
- one.
- - --dedupe-mode oldest - removes identical files then keeps the oldest
- one.
- - --dedupe-mode largest - removes identical files then keeps the
- largest one.
- - --dedupe-mode smallest - removes identical files then keeps the
- smallest one.
- - --dedupe-mode rename - removes identical files then renames the rest
- to be different.
- For example to rename all the identically named photos in your Google
- Photos directory, do
- rclone dedupe --dedupe-mode rename "drive:Google Photos"
- Or
- rclone dedupe rename "drive:Google Photos"
- rclone dedupe [mode] remote:path [flags]
- Options
- --dedupe-mode string Dedupe mode interactive|skip|first|newest|oldest|largest|smallest|rename. (default "interactive")
- -h, --help help for dedupe
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone about
- Get quota information from the remote.
- Synopsis
- Get quota information from the remote, like bytes used/free/quota and
- bytes used in the trash. Not supported by all remotes.
- This will print to stdout something like this:
- Total: 17G
- Used: 7.444G
- Free: 1.315G
- Trashed: 100.000M
- Other: 8.241G
- Where the fields are:
- - Total: total size available.
- - Used: total size used
- - Free: total amount this user could upload.
- - Trashed: total amount in the trash
- - Other: total amount in other storage (eg Gmail, Google Photos)
- - Objects: total number of objects in the storage
- Note that not all the backends provide all the fields - they will be
- missing if they are not known for that backend. Where it is known that
- the value is unlimited the value will also be omitted.
- Use the –full flag to see the numbers written out in full, eg
- Total: 18253611008
- Used: 7993453766
- Free: 1411001220
- Trashed: 104857602
- Other: 8849156022
- Use the –json flag for a computer readable output, eg
- {
- "total": 18253611008,
- "used": 7993453766,
- "trashed": 104857602,
- "other": 8849156022,
- "free": 1411001220
- }
- rclone about remote: [flags]
- Options
- --full Full numbers instead of SI units
- -h, --help help for about
- --json Format output as JSON
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone authorize
- Remote authorization.
- Synopsis
- Remote authorization. Used to authorize a remote or headless rclone from
- a machine with a browser - use as instructed by rclone config.
- Use the –auth-no-open-browser to prevent rclone to open auth link in
- default browser automatically.
- rclone authorize [flags]
- Options
- --auth-no-open-browser Do not automatically open auth link in default browser
- -h, --help help for authorize
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone cachestats
- Print cache stats for a remote
- Synopsis
- Print cache stats for a remote in JSON format
- rclone cachestats source: [flags]
- Options
- -h, --help help for cachestats
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone cat
- Concatenates any files and sends them to stdout.
- Synopsis
- rclone cat sends any files to standard output.
- You can use it like this to output a single file
- rclone cat remote:path/to/file
- Or like this to output any file in dir or subdirectories.
- rclone cat remote:path/to/dir
- Or like this to output any .txt files in dir or subdirectories.
- rclone --include "*.txt" cat remote:path/to/dir
- Use the –head flag to print characters only at the start, –tail for the
- end and –offset and –count to print a section in the middle. Note that
- if offset is negative it will count from the end, so –offset -1 –count 1
- is equivalent to –tail 1.
- rclone cat remote:path [flags]
- Options
- --count int Only print N characters. (default -1)
- --discard Discard the output instead of printing.
- --head int Only print the first N characters.
- -h, --help help for cat
- --offset int Start printing at offset N (or from end if -ve).
- --tail int Only print the last N characters.
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone config create
- Create a new remote with name, type and options.
- Synopsis
- Create a new remote of with and options. The options should be passed in
- in pairs of .
- For example to make a swift remote of name myremote using auto config
- you would do:
- rclone config create myremote swift env_auth true
- Note that if the config process would normally ask a question the
- default is taken. Each time that happens rclone will print a message
- saying how to affect the value taken.
- If any of the parameters passed is a password field, then rclone will
- automatically obscure them before putting them in the config file.
- So for example if you wanted to configure a Google Drive remote but
- using remote authorization you would do this:
- rclone config create mydrive drive config_is_local false
- rclone config create <name> <type> [<key> <value>]* [flags]
- Options
- -h, --help help for create
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone config - Enter an interactive configuration session.
- rclone config delete
- Delete an existing remote .
- Synopsis
- Delete an existing remote .
- rclone config delete <name> [flags]
- Options
- -h, --help help for delete
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone config - Enter an interactive configuration session.
- rclone config disconnect
- Disconnects user from remote
- Synopsis
- This disconnects the remote: passed in to the cloud storage system.
- This normally means revoking the oauth token.
- To reconnect use “rclone config reconnect”.
- rclone config disconnect remote: [flags]
- Options
- -h, --help help for disconnect
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone config - Enter an interactive configuration session.
- rclone config dump
- Dump the config file as JSON.
- Synopsis
- Dump the config file as JSON.
- rclone config dump [flags]
- Options
- -h, --help help for dump
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone config - Enter an interactive configuration session.
- rclone config edit
- Enter an interactive configuration session.
- Synopsis
- Enter an interactive configuration session where you can setup new
- remotes and manage existing ones. You may also set or remove a password
- to protect your configuration.
- rclone config edit [flags]
- Options
- -h, --help help for edit
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone config - Enter an interactive configuration session.
- rclone config file
- Show path of configuration file in use.
- Synopsis
- Show path of configuration file in use.
- rclone config file [flags]
- Options
- -h, --help help for file
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone config - Enter an interactive configuration session.
- rclone config password
- Update password in an existing remote.
- Synopsis
- Update an existing remote’s password. The password should be passed in
- in pairs of .
- For example to set password of a remote of name myremote you would do:
- rclone config password myremote fieldname mypassword
- This command is obsolete now that “config update” and “config create”
- both support obscuring passwords directly.
- rclone config password <name> [<key> <value>]+ [flags]
- Options
- -h, --help help for password
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone config - Enter an interactive configuration session.
- rclone config providers
- List in JSON format all the providers and options.
- Synopsis
- List in JSON format all the providers and options.
- rclone config providers [flags]
- Options
- -h, --help help for providers
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone config - Enter an interactive configuration session.
- rclone config reconnect
- Re-authenticates user with remote.
- Synopsis
- This reconnects remote: passed in to the cloud storage system.
- To disconnect the remote use “rclone config disconnect”.
- This normally means going through the interactive oauth flow again.
- rclone config reconnect remote: [flags]
- Options
- -h, --help help for reconnect
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone config - Enter an interactive configuration session.
- rclone config show
- Print (decrypted) config file, or the config for a single remote.
- Synopsis
- Print (decrypted) config file, or the config for a single remote.
- rclone config show [<remote>] [flags]
- Options
- -h, --help help for show
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone config - Enter an interactive configuration session.
- rclone config update
- Update options in an existing remote.
- Synopsis
- Update an existing remote’s options. The options should be passed in in
- pairs of .
- For example to update the env_auth field of a remote of name myremote
- you would do:
- rclone config update myremote swift env_auth true
- If any of the parameters passed is a password field, then rclone will
- automatically obscure them before putting them in the config file.
- If the remote uses oauth the token will be updated, if you don’t require
- this add an extra parameter thus:
- rclone config update myremote swift env_auth true config_refresh_token false
- rclone config update <name> [<key> <value>]+ [flags]
- Options
- -h, --help help for update
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone config - Enter an interactive configuration session.
- rclone config userinfo
- Prints info about logged in user of remote.
- Synopsis
- This prints the details of the person logged in to the cloud storage
- system.
- rclone config userinfo remote: [flags]
- Options
- -h, --help help for userinfo
- --json Format output as JSON
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone config - Enter an interactive configuration session.
- rclone copyto
- Copy files from source to dest, skipping already copied
- Synopsis
- If source:path is a file or directory then it copies it to a file or
- directory named dest:path.
- This can be used to upload single files to other than their current
- name. If the source is a directory then it acts exactly like the copy
- command.
- So
- rclone copyto src dst
- where src and dst are rclone paths, either remote:path or /path/to/local
- or C:.
- This will:
- if src is file
- copy it to dst, overwriting an existing file if it exists
- if src is directory
- copy it to dst, overwriting existing files if they exist
- see copy command for full details
- This doesn’t transfer unchanged files, testing by size and modification
- time or MD5SUM. It doesn’t delete files from the destination.
- NOTE: Use the -P/--progress flag to view real-time transfer statistics
- rclone copyto source:path dest:path [flags]
- Options
- -h, --help help for copyto
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone copyurl
- Copy url content to dest.
- Synopsis
- Download a URL’s content and copy it to the destination without saving
- it in temporary storage.
- Setting –auto-filename will cause the file name to be retreived from the
- from URL (after any redirections) and used in the destination path.
- Setting –stdout or making the output file name “-” will cause the output
- to be written to standard output.
- rclone copyurl https://example.com dest:path [flags]
- Options
- -a, --auto-filename Get the file name from the URL and use it for destination file path
- -h, --help help for copyurl
- --stdout Write the output to stdout rather than a file
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone cryptcheck
- Cryptcheck checks the integrity of a crypted remote.
- Synopsis
- rclone cryptcheck checks a remote against a crypted remote. This is the
- equivalent of running rclone check, but able to check the checksums of
- the crypted remote.
- For it to work the underlying remote of the cryptedremote must support
- some kind of checksum.
- It works by reading the nonce from each file on the cryptedremote: and
- using that to encrypt each file on the remote:. It then checks the
- checksum of the underlying file on the cryptedremote: against the
- checksum of the file it has just encrypted.
- Use it like this
- rclone cryptcheck /path/to/files encryptedremote:path
- You can use it like this also, but that will involve downloading all the
- files in remote:path.
- rclone cryptcheck remote:path encryptedremote:path
- After it has run it will log the status of the encryptedremote:.
- If you supply the –one-way flag, it will only check that files in source
- match the files in destination, not the other way around. Meaning extra
- files in destination that are not in the source will not trigger an
- error.
- rclone cryptcheck remote:path cryptedremote:path [flags]
- Options
- -h, --help help for cryptcheck
- --one-way Check one way only, source files must exist on destination
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone cryptdecode
- Cryptdecode returns unencrypted file names.
- Synopsis
- rclone cryptdecode returns unencrypted file names when provided with a
- list of encrypted file names. List limit is 10 items.
- If you supply the –reverse flag, it will return encrypted file names.
- use it like this
- rclone cryptdecode encryptedremote: encryptedfilename1 encryptedfilename2
- rclone cryptdecode --reverse encryptedremote: filename1 filename2
- rclone cryptdecode encryptedremote: encryptedfilename [flags]
- Options
- -h, --help help for cryptdecode
- --reverse Reverse cryptdecode, encrypts filenames
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone dbhashsum
- Produces a Dropbox hash file for all the objects in the path.
- Synopsis
- Produces a Dropbox hash file for all the objects in the path. The hashes
- are calculated according to Dropbox content hash rules. The output is in
- the same format as md5sum and sha1sum.
- rclone dbhashsum remote:path [flags]
- Options
- -h, --help help for dbhashsum
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone deletefile
- Remove a single file from remote.
- Synopsis
- Remove a single file from remote. Unlike delete it cannot be used to
- remove a directory and it doesn’t obey include/exclude filters - if the
- specified file exists, it will always be removed.
- rclone deletefile remote:path [flags]
- Options
- -h, --help help for deletefile
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone genautocomplete
- Output completion script for a given shell.
- Synopsis
- Generates a shell completion script for rclone. Run with –help to list
- the supported shells.
- Options
- -h, --help help for genautocomplete
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- - rclone genautocomplete bash - Output bash completion script for
- rclone.
- - rclone genautocomplete zsh - Output zsh completion script for
- rclone.
- rclone genautocomplete bash
- Output bash completion script for rclone.
- Synopsis
- Generates a bash shell autocompletion script for rclone.
- This writes to /etc/bash_completion.d/rclone by default so will probably
- need to be run with sudo or as root, eg
- sudo rclone genautocomplete bash
- Logout and login again to use the autocompletion scripts, or source them
- directly
- . /etc/bash_completion
- If you supply a command line argument the script will be written there.
- rclone genautocomplete bash [output_file] [flags]
- Options
- -h, --help help for bash
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone genautocomplete - Output completion script for a given shell.
- rclone genautocomplete zsh
- Output zsh completion script for rclone.
- Synopsis
- Generates a zsh autocompletion script for rclone.
- This writes to /usr/share/zsh/vendor-completions/_rclone by default so
- will probably need to be run with sudo or as root, eg
- sudo rclone genautocomplete zsh
- Logout and login again to use the autocompletion scripts, or source them
- directly
- autoload -U compinit && compinit
- If you supply a command line argument the script will be written there.
- rclone genautocomplete zsh [output_file] [flags]
- Options
- -h, --help help for zsh
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone genautocomplete - Output completion script for a given shell.
- rclone gendocs
- Output markdown docs for rclone to the directory supplied.
- Synopsis
- This produces markdown docs for the rclone commands to the directory
- supplied. These are in a format suitable for hugo to render into the
- rclone.org website.
- rclone gendocs output_directory [flags]
- Options
- -h, --help help for gendocs
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone hashsum
- Produces an hashsum file for all the objects in the path.
- Synopsis
- Produces a hash file for all the objects in the path using the hash
- named. The output is in the same format as the standard md5sum/sha1sum
- tool.
- Run without a hash to see the list of supported hashes, eg
- $ rclone hashsum
- Supported hashes are:
- * MD5
- * SHA-1
- * DropboxHash
- * QuickXorHash
- Then
- $ rclone hashsum MD5 remote:path
- rclone hashsum <hash> remote:path [flags]
- Options
- --base64 Output base64 encoded hashsum
- -h, --help help for hashsum
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone link
- Generate public link to file/folder.
- Synopsis
- rclone link will create or retrieve a public link to the given file or
- folder.
- rclone link remote:path/to/file
- rclone link remote:path/to/folder/
- If successful, the last line of the output will contain the link. Exact
- capabilities depend on the remote, but the link will always be created
- with the least constraints – e.g. no expiry, no password protection,
- accessible without account.
- rclone link remote:path [flags]
- Options
- -h, --help help for link
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone listremotes
- List all the remotes in the config file.
- Synopsis
- rclone listremotes lists all the available remotes from the config file.
- When uses with the -l flag it lists the types too.
- rclone listremotes [flags]
- Options
- -h, --help help for listremotes
- --long Show the type as well as names.
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone lsf
- List directories and objects in remote:path formatted for parsing
- Synopsis
- List the contents of the source path (directories and objects) to
- standard output in a form which is easy to parse by scripts. By default
- this will just be the names of the objects and directories, one per
- line. The directories will have a / suffix.
- Eg
- $ rclone lsf swift:bucket
- bevajer5jef
- canole
- diwogej7
- ferejej3gux/
- fubuwic
- Use the –format option to control what gets listed. By default this is
- just the path, but you can use these parameters to control the output:
- p - path
- s - size
- t - modification time
- h - hash
- i - ID of object
- o - Original ID of underlying object
- m - MimeType of object if known
- e - encrypted name
- T - tier of storage if known, eg "Hot" or "Cool"
- So if you wanted the path, size and modification time, you would use
- –format “pst”, or maybe –format “tsp” to put the path last.
- Eg
- $ rclone lsf --format "tsp" swift:bucket
- 2016-06-25 18:55:41;60295;bevajer5jef
- 2016-06-25 18:55:43;90613;canole
- 2016-06-25 18:55:43;94467;diwogej7
- 2018-04-26 08:50:45;0;ferejej3gux/
- 2016-06-25 18:55:40;37600;fubuwic
- If you specify “h” in the format you will get the MD5 hash by default,
- use the “–hash” flag to change which hash you want. Note that this can
- be returned as an empty string if it isn’t available on the object (and
- for directories), “ERROR” if there was an error reading it from the
- object and “UNSUPPORTED” if that object does not support that hash type.
- For example to emulate the md5sum command you can use
- rclone lsf -R --hash MD5 --format hp --separator " " --files-only .
- Eg
- $ rclone lsf -R --hash MD5 --format hp --separator " " --files-only swift:bucket
- 7908e352297f0f530b84a756f188baa3 bevajer5jef
- cd65ac234e6fea5925974a51cdd865cc canole
- 03b5341b4f234b9d984d03ad076bae91 diwogej7
- 8fd37c3810dd660778137ac3a66cc06d fubuwic
- 99713e14a4c4ff553acaf1930fad985b gixacuh7ku
- (Though “rclone md5sum .” is an easier way of typing this.)
- By default the separator is “;” this can be changed with the –separator
- flag. Note that separators aren’t escaped in the path so putting it last
- is a good strategy.
- Eg
- $ rclone lsf --separator "," --format "tshp" swift:bucket
- 2016-06-25 18:55:41,60295,7908e352297f0f530b84a756f188baa3,bevajer5jef
- 2016-06-25 18:55:43,90613,cd65ac234e6fea5925974a51cdd865cc,canole
- 2016-06-25 18:55:43,94467,03b5341b4f234b9d984d03ad076bae91,diwogej7
- 2018-04-26 08:52:53,0,,ferejej3gux/
- 2016-06-25 18:55:40,37600,8fd37c3810dd660778137ac3a66cc06d,fubuwic
- You can output in CSV standard format. This will escape things in " if
- they contain ,
- Eg
- $ rclone lsf --csv --files-only --format ps remote:path
- test.log,22355
- test.sh,449
- "this file contains a comma, in the file name.txt",6
- Note that the –absolute parameter is useful for making lists of files to
- pass to an rclone copy with the –files-from flag.
- For example to find all the files modified within one day and copy those
- only (without traversing the whole directory structure):
- rclone lsf --absolute --files-only --max-age 1d /path/to/local > new_files
- rclone copy --files-from new_files /path/to/local remote:path
- Any of the filtering options can be applied to this command.
- There are several related list commands
- - ls to list size and path of objects only
- - lsl to list modification time, size and path of objects only
- - lsd to list directories only
- - lsf to list objects and directories in easy to parse format
- - lsjson to list objects and directories in JSON format
- ls,lsl,lsd are designed to be human readable. lsf is designed to be
- human and machine readable. lsjson is designed to be machine readable.
- Note that ls and lsl recurse by default - use “–max-depth 1” to stop the
- recursion.
- The other list commands lsd,lsf,lsjson do not recurse by default - use
- “-R” to make them recurse.
- Listing a non existent directory will produce an error except for
- remotes which can’t have empty directories (eg s3, swift, gcs, etc - the
- bucket based remotes).
- rclone lsf remote:path [flags]
- Options
- --absolute Put a leading / in front of path names.
- --csv Output in CSV format.
- -d, --dir-slash Append a slash to directory names. (default true)
- --dirs-only Only list directories.
- --files-only Only list files.
- -F, --format string Output format - see help for details (default "p")
- --hash h Use this hash when h is used in the format MD5|SHA-1|DropboxHash (default "MD5")
- -h, --help help for lsf
- -R, --recursive Recurse into the listing.
- -s, --separator string Separator for the items in the format. (default ";")
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone lsjson
- List directories and objects in the path in JSON format.
- Synopsis
- List directories and objects in the path in JSON format.
- The output is an array of Items, where each Item looks like this
- { “Hashes” : { “SHA-1” : “f572d396fae9206628714fb2ce00f72e94f2258f”,
- “MD5” : “b1946ac92492d2347c6235b4d2611184”, “DropboxHash” :
- “ecb65bb98f9d905b70458986c39fcbad7715e5f2fcc3b1f07767d7c83e2438cc” },
- “ID”: “y2djkhiujf83u33”, “OrigID”: “UYOJVTUW00Q1RzTDA”, “IsBucket” :
- false, “IsDir” : false, “MimeType” : “application/octet-stream”,
- “ModTime” : “2017-05-31T16:15:57.034468261+01:00”, “Name” : “file.txt”,
- “Encrypted” : “v0qpsdq8anpci8n929v3uu9338”, “EncryptedPath” :
- “kja9098349023498/v0qpsdq8anpci8n929v3uu9338”, “Path” :
- “full/path/goes/here/file.txt”, “Size” : 6, “Tier” : “hot”, }
- If –hash is not specified the Hashes property won’t be emitted.
- If –no-modtime is specified then ModTime will be blank. This can speed
- things up on remotes where reading the ModTime takes an extra request
- (eg s3, swift).
- If –no-mimetype is specified then MimeType will be blank. This can speed
- things up on remotes where reading the MimeType takes an extra request
- (eg s3, swift).
- If –encrypted is not specified the Encrypted won’t be emitted.
- If –dirs-only is not specified files in addition to directories are
- returned
- If –files-only is not specified directories in addition to the files
- will be returned.
- The Path field will only show folders below the remote path being
- listed. If “remote:path” contains the file “subfolder/file.txt”, the
- Path for “file.txt” will be “subfolder/file.txt”, not
- “remote:path/subfolder/file.txt”. When used without –recursive the Path
- will always be the same as Name.
- If the directory is a bucket in a bucket based backend, then “IsBucket”
- will be set to true. This key won’t be present unless it is “true”.
- The time is in RFC3339 format with up to nanosecond precision. The
- number of decimal digits in the seconds will depend on the precision
- that the remote can hold the times, so if times are accurate to the
- nearest millisecond (eg Google Drive) then 3 digits will always be shown
- (“2017-05-31T16:15:57.034+01:00”) whereas if the times are accurate to
- the nearest second (Dropbox, Box, WebDav etc) no digits will be shown
- (“2017-05-31T16:15:57+01:00”).
- The whole output can be processed as a JSON blob, or alternatively it
- can be processed line by line as each item is written one to a line.
- Any of the filtering options can be applied to this command.
- There are several related list commands
- - ls to list size and path of objects only
- - lsl to list modification time, size and path of objects only
- - lsd to list directories only
- - lsf to list objects and directories in easy to parse format
- - lsjson to list objects and directories in JSON format
- ls,lsl,lsd are designed to be human readable. lsf is designed to be
- human and machine readable. lsjson is designed to be machine readable.
- Note that ls and lsl recurse by default - use “–max-depth 1” to stop the
- recursion.
- The other list commands lsd,lsf,lsjson do not recurse by default - use
- “-R” to make them recurse.
- Listing a non existent directory will produce an error except for
- remotes which can’t have empty directories (eg s3, swift, gcs, etc - the
- bucket based remotes).
- rclone lsjson remote:path [flags]
- Options
- --dirs-only Show only directories in the listing.
- -M, --encrypted Show the encrypted names.
- --files-only Show only files in the listing.
- --hash Include hashes in the output (may take longer).
- -h, --help help for lsjson
- --no-mimetype Don't read the mime type (can speed things up).
- --no-modtime Don't read the modification time (can speed things up).
- --original Show the ID of the underlying Object.
- -R, --recursive Recurse into the listing.
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone mount
- Mount the remote as file system on a mountpoint.
- Synopsis
- rclone mount allows Linux, FreeBSD, macOS and Windows to mount any of
- Rclone’s cloud storage systems as a file system with FUSE.
- First set up your remote using rclone config. Check it works with
- rclone ls etc.
- Start the mount like this
- rclone mount remote:path/to/files /path/to/local/mount
- Or on Windows like this where X: is an unused drive letter
- rclone mount remote:path/to/files X:
- When the program ends, either via Ctrl+C or receiving a SIGINT or
- SIGTERM signal, the mount is automatically stopped.
- The umount operation can fail, for example when the mountpoint is busy.
- When that happens, it is the user’s responsibility to stop the mount
- manually with
- # Linux
- fusermount -u /path/to/local/mount
- # OS X
- umount /path/to/local/mount
- Installing on Windows
- To run rclone mount on Windows, you will need to download and install
- WinFsp.
- WinFsp is an open source Windows File System Proxy which makes it easy
- to write user space file systems for Windows. It provides a FUSE
- emulation layer which rclone uses combination with cgofuse. Both of
- these packages are by Bill Zissimopoulos who was very helpful during the
- implementation of rclone mount for Windows.
- Windows caveats
- Note that drives created as Administrator are not visible by other
- accounts (including the account that was elevated as Administrator). So
- if you start a Windows drive from an Administrative Command Prompt and
- then try to access the same drive from Explorer (which does not run as
- Administrator), you will not be able to see the new drive.
- The easiest way around this is to start the drive from a normal command
- prompt. It is also possible to start a drive from the SYSTEM account
- (using the WinFsp.Launcher infrastructure) which creates drives
- accessible for everyone on the system or alternatively using the nssm
- service manager.
- Limitations
- Without the use of “–vfs-cache-mode” this can only write files
- sequentially, it can only seek when reading. This means that many
- applications won’t work with their files on an rclone mount without
- “–vfs-cache-mode writes” or “–vfs-cache-mode full”. See the File Caching
- section for more info.
- The bucket based remotes (eg Swift, S3, Google Compute Storage, B2,
- Hubic) do not support the concept of empty directories, so empty
- directories will have a tendency to disappear once they fall out of the
- directory cache.
- Only supported on Linux, FreeBSD, OS X and Windows at the moment.
- rclone mount vs rclone sync/copy
- File systems expect things to be 100% reliable, whereas cloud storage
- systems are a long way from 100% reliable. The rclone sync/copy commands
- cope with this with lots of retries. However rclone mount can’t use
- retries in the same way without making local copies of the uploads. Look
- at the file caching for solutions to make mount more reliable.
- Attribute caching
- You can use the flag –attr-timeout to set the time the kernel caches the
- attributes (size, modification time etc) for directory entries.
- The default is “1s” which caches files just long enough to avoid too
- many callbacks to rclone from the kernel.
- In theory 0s should be the correct value for filesystems which can
- change outside the control of the kernel. However this causes quite a
- few problems such as rclone using too much memory, rclone not serving
- files to samba and excessive time listing directories.
- The kernel can cache the info about a file for the time given by
- “–attr-timeout”. You may see corruption if the remote file changes
- length during this window. It will show up as either a truncated file or
- a file with garbage on the end. With “–attr-timeout 1s” this is very
- unlikely but not impossible. The higher you set “–attr-timeout” the more
- likely it is. The default setting of “1s” is the lowest setting which
- mitigates the problems above.
- If you set it higher (‘10s’ or ‘1m’ say) then the kernel will call back
- to rclone less often making it more efficient, however there is more
- chance of the corruption issue above.
- If files don’t change on the remote outside of the control of rclone
- then there is no chance of corruption.
- This is the same as setting the attr_timeout option in mount.fuse.
- Filters
- Note that all the rclone filters can be used to select a subset of the
- files to be visible in the mount.
- systemd
- When running rclone mount as a systemd service, it is possible to use
- Type=notify. In this case the service will enter the started state after
- the mountpoint has been successfully set up. Units having the rclone
- mount service specified as a requirement will see all files and folders
- immediately in this mode.
- chunked reading
- –vfs-read-chunk-size will enable reading the source objects in parts.
- This can reduce the used download quota for some remotes by requesting
- only chunks from the remote that are actually read at the cost of an
- increased number of requests.
- When –vfs-read-chunk-size-limit is also specified and greater than
- –vfs-read-chunk-size, the chunk size for each open file will get doubled
- for each chunk read, until the specified value is reached. A value of -1
- will disable the limit and the chunk size will grow indefinitely.
- With –vfs-read-chunk-size 100M and –vfs-read-chunk-size-limit 0 the
- following parts will be downloaded: 0-100M, 100M-200M, 200M-300M,
- 300M-400M and so on. When –vfs-read-chunk-size-limit 500M is specified,
- the result would be 0-100M, 100M-300M, 300M-700M, 700M-1200M,
- 1200M-1700M and so on.
- Chunked reading will only work with –vfs-cache-mode < full, as the file
- will always be copied to the vfs cache before opening with
- –vfs-cache-mode full.
- Directory Cache
- Using the --dir-cache-time flag, you can set how long a directory should
- be considered up to date and not refreshed from the backend. Changes
- made locally in the mount may appear immediately or invalidate the
- cache. However, changes done on the remote will only be picked up once
- the cache expires.
- Alternatively, you can send a SIGHUP signal to rclone for it to flush
- all directory caches, regardless of how old they are. Assuming only one
- rclone instance is running, you can reset the cache like this:
- kill -SIGHUP $(pidof rclone)
- If you configure rclone with a remote control then you can use rclone rc
- to flush the whole directory cache:
- rclone rc vfs/forget
- Or individual files or directories:
- rclone rc vfs/forget file=path/to/file dir=path/to/dir
- File Buffering
- The --buffer-size flag determines the amount of memory, that will be
- used to buffer data in advance.
- Each open file descriptor will try to keep the specified amount of data
- in memory at all times. The buffered data is bound to one file
- descriptor and won’t be shared between multiple open file descriptors of
- the same file.
- This flag is a upper limit for the used memory per file descriptor. The
- buffer will only use memory for data that is downloaded but not not yet
- read. If the buffer is empty, only a small amount of memory will be
- used. The maximum memory used by rclone for buffering can be up to
- --buffer-size * open files.
- File Caching
- These flags control the VFS file caching options. The VFS layer is used
- by rclone mount to make a cloud storage system work more like a normal
- file system.
- You’ll need to enable VFS caching if you want, for example, to read and
- write simultaneously to a file. See below for more details.
- Note that the VFS cache works in addition to the cache backend and you
- may find that you need one or the other or both.
- --cache-dir string Directory rclone will use for caching.
- --vfs-cache-max-age duration Max age of objects in the cache. (default 1h0m0s)
- --vfs-cache-mode string Cache mode off|minimal|writes|full (default "off")
- --vfs-cache-poll-interval duration Interval to poll the cache for stale objects. (default 1m0s)
- --vfs-cache-max-size int Max total size of objects in the cache. (default off)
- If run with -vv rclone will print the location of the file cache. The
- files are stored in the user cache file area which is OS dependent but
- can be controlled with --cache-dir or setting the appropriate
- environment variable.
- The cache has 4 different modes selected by --vfs-cache-mode. The higher
- the cache mode the more compatible rclone becomes at the cost of using
- disk space.
- Note that files are written back to the remote only when they are closed
- so if rclone is quit or dies with open files then these won’t get
- written back to the remote. However they will still be in the on disk
- cache.
- If using –vfs-cache-max-size note that the cache may exceed this size
- for two reasons. Firstly because it is only checked every
- –vfs-cache-poll-interval. Secondly because open files cannot be evicted
- from the cache.
- –vfs-cache-mode off
- In this mode the cache will read directly from the remote and write
- directly to the remote without caching anything on disk.
- This will mean some operations are not possible
- - Files can’t be opened for both read AND write
- - Files opened for write can’t be seeked
- - Existing files opened for write must have O_TRUNC set
- - Files open for read with O_TRUNC will be opened write only
- - Files open for write only will behave as if O_TRUNC was supplied
- - Open modes O_APPEND, O_TRUNC are ignored
- - If an upload fails it can’t be retried
- –vfs-cache-mode minimal
- This is very similar to “off” except that files opened for read AND
- write will be buffered to disks. This means that files opened for write
- will be a lot more compatible, but uses the minimal disk space.
- These operations are not possible
- - Files opened for write only can’t be seeked
- - Existing files opened for write must have O_TRUNC set
- - Files opened for write only will ignore O_APPEND, O_TRUNC
- - If an upload fails it can’t be retried
- –vfs-cache-mode writes
- In this mode files opened for read only are still read directly from the
- remote, write only and read/write files are buffered to disk first.
- This mode should support all normal file system operations.
- If an upload fails it will be retried up to –low-level-retries times.
- –vfs-cache-mode full
- In this mode all reads and writes are buffered to and from disk. When a
- file is opened for read it will be downloaded in its entirety first.
- This may be appropriate for your needs, or you may prefer to look at the
- cache backend which does a much more sophisticated job of caching,
- including caching directory hierarchies and chunks of files.
- In this mode, unlike the others, when a file is written to the disk, it
- will be kept on the disk after it is written to the remote. It will be
- purged on a schedule according to --vfs-cache-max-age.
- This mode should support all normal file system operations.
- If an upload or download fails it will be retried up to
- –low-level-retries times.
- rclone mount remote:path /path/to/mountpoint [flags]
- Options
- --allow-non-empty Allow mounting over a non-empty directory.
- --allow-other Allow access to other users.
- --allow-root Allow access to root user.
- --attr-timeout duration Time for which file/directory attributes are cached. (default 1s)
- --daemon Run mount as a daemon (background mode).
- --daemon-timeout duration Time limit for rclone to respond to kernel (not supported by all OSes).
- --debug-fuse Debug the FUSE internals - needs -v.
- --default-permissions Makes kernel enforce access control based on the file mode.
- --dir-cache-time duration Time to cache directory entries for. (default 5m0s)
- --dir-perms FileMode Directory permissions (default 0777)
- --file-perms FileMode File permissions (default 0666)
- --fuse-flag stringArray Flags or arguments to be passed direct to libfuse/WinFsp. Repeat if required.
- --gid uint32 Override the gid field set by the filesystem. (default 1000)
- -h, --help help for mount
- --max-read-ahead SizeSuffix The number of bytes that can be prefetched for sequential reads. (default 128k)
- --no-checksum Don't compare checksums on up/download.
- --no-modtime Don't read/write the modification time (can speed things up).
- --no-seek Don't allow seeking in files.
- -o, --option stringArray Option for libfuse/WinFsp. Repeat if required.
- --poll-interval duration Time to wait between polling for changes. Must be smaller than dir-cache-time. Only on supported remotes. Set to 0 to disable. (default 1m0s)
- --read-only Mount read-only.
- --uid uint32 Override the uid field set by the filesystem. (default 1000)
- --umask int Override the permission bits set by the filesystem.
- --vfs-cache-max-age duration Max age of objects in the cache. (default 1h0m0s)
- --vfs-cache-max-size SizeSuffix Max total size of objects in the cache. (default off)
- --vfs-cache-mode CacheMode Cache mode off|minimal|writes|full (default off)
- --vfs-cache-poll-interval duration Interval to poll the cache for stale objects. (default 1m0s)
- --vfs-case-insensitive If a file name not found, find a case insensitive match.
- --vfs-read-chunk-size SizeSuffix Read the source objects in chunks. (default 128M)
- --vfs-read-chunk-size-limit SizeSuffix If greater than --vfs-read-chunk-size, double the chunk size after each chunk read, until the limit is reached. 'off' is unlimited. (default off)
- --volname string Set the volume name (not supported by all OSes).
- --write-back-cache Makes kernel buffer writes before sending them to rclone. Without this, writethrough caching is used.
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone moveto
- Move file or directory from source to dest.
- Synopsis
- If source:path is a file or directory then it moves it to a file or
- directory named dest:path.
- This can be used to rename files or upload single files to other than
- their existing name. If the source is a directory then it acts exactly
- like the move command.
- So
- rclone moveto src dst
- where src and dst are rclone paths, either remote:path or /path/to/local
- or C:.
- This will:
- if src is file
- move it to dst, overwriting an existing file if it exists
- if src is directory
- move it to dst, overwriting existing files if they exist
- see move command for full details
- This doesn’t transfer unchanged files, testing by size and modification
- time or MD5SUM. src will be deleted on successful transfer.
- IMPORTANT: Since this can cause data loss, test first with the –dry-run
- flag.
- NOTE: Use the -P/--progress flag to view real-time transfer statistics.
- rclone moveto source:path dest:path [flags]
- Options
- -h, --help help for moveto
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone ncdu
- Explore a remote with a text based user interface.
- Synopsis
- This displays a text based user interface allowing the navigation of a
- remote. It is most useful for answering the question - “What is using
- all my disk space?”.
- To make the user interface it first scans the entire remote given and
- builds an in memory representation. rclone ncdu can be used during this
- scanning phase and you will see it building up the directory structure
- as it goes along.
- Here are the keys - press ‘?’ to toggle the help on and off
- ↑,↓ or k,j to Move
- →,l to enter
- ←,h to return
- c toggle counts
- g toggle graph
- n,s,C sort by name,size,count
- d delete file/directory
- y copy current path to clipbard
- Y display current path
- ^L refresh screen
- ? to toggle help on and off
- q/ESC/c-C to quit
- This an homage to the ncdu tool but for rclone remotes. It is missing
- lots of features at the moment but is useful as it stands.
- Note that it might take some time to delete big files/folders. The UI
- won’t respond in the meantime since the deletion is done synchronously.
- rclone ncdu remote:path [flags]
- Options
- -h, --help help for ncdu
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone obscure
- Obscure password for use in the rclone.conf
- Synopsis
- Obscure password for use in the rclone.conf
- rclone obscure password [flags]
- Options
- -h, --help help for obscure
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone rc
- Run a command against a running rclone.
- Synopsis
- This runs a command against a running rclone. Use the –url flag to
- specify an non default URL to connect on. This can be either a “:port”
- which is taken to mean “http://localhost:port” or a “host:port” which is
- taken to mean “http://host:port”
- A username and password can be passed in with –user and –pass.
- Note that –rc-addr, –rc-user, –rc-pass will be read also for –url,
- –user, –pass.
- Arguments should be passed in as parameter=value.
- The result will be returned as a JSON object by default.
- The –json parameter can be used to pass in a JSON blob as an input
- instead of key=value arguments. This is the only way of passing in more
- complicated values.
- Use –loopback to connect to the rclone instance running “rclone rc”.
- This is very useful for testing commands without having to run an rclone
- rc server, eg:
- rclone rc --loopback operations/about fs=/
- Use “rclone rc” to see a list of all possible commands.
- rclone rc commands parameter [flags]
- Options
- -h, --help help for rc
- --json string Input JSON - use instead of key=value args.
- --loopback If set connect to this rclone instance not via HTTP.
- --no-output If set don't output the JSON result.
- --pass string Password to use to connect to rclone remote control.
- --url string URL to connect to rclone remote control. (default "http://localhost:5572/")
- --user string Username to use to rclone remote control.
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone rcat
- Copies standard input to file on remote.
- Synopsis
- rclone rcat reads from standard input (stdin) and copies it to a single
- remote file.
- echo "hello world" | rclone rcat remote:path/to/file
- ffmpeg - | rclone rcat remote:path/to/file
- If the remote file already exists, it will be overwritten.
- rcat will try to upload small files in a single request, which is
- usually more efficient than the streaming/chunked upload endpoints,
- which use multiple requests. Exact behaviour depends on the remote. What
- is considered a small file may be set through --streaming-upload-cutoff.
- Uploading only starts after the cutoff is reached or if the file ends
- before that. The data must fit into RAM. The cutoff needs to be small
- enough to adhere the limits of your remote, please see there. Generally
- speaking, setting this cutoff too high will decrease your performance.
- Note that the upload can also not be retried because the data is not
- kept around until the upload succeeds. If you need to transfer a lot of
- data, you’re better off caching locally and then rclone move it to the
- destination.
- rclone rcat remote:path [flags]
- Options
- -h, --help help for rcat
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone rcd
- Run rclone listening to remote control commands only.
- Synopsis
- This runs rclone so that it only listens to remote control commands.
- This is useful if you are controlling rclone via the rc API.
- If you pass in a path to a directory, rclone will serve that directory
- for GET requests on the URL passed in. It will also open the URL in the
- browser when rclone is run.
- See the rc documentation for more info on the rc flags.
- rclone rcd <path to files to serve>* [flags]
- Options
- -h, --help help for rcd
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone rmdirs
- Remove empty directories under the path.
- Synopsis
- This removes any empty directories (or directories that only contain
- empty directories) under the path that it finds, including the path if
- it has nothing in.
- If you supply the –leave-root flag, it will not remove the root
- directory.
- This is useful for tidying up remotes that rclone has left a lot of
- empty directories in.
- rclone rmdirs remote:path [flags]
- Options
- -h, --help help for rmdirs
- --leave-root Do not remove root directory if empty
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone serve
- Serve a remote over a protocol.
- Synopsis
- rclone serve is used to serve a remote over a given protocol. This
- command requires the use of a subcommand to specify the protocol, eg
- rclone serve http remote:
- Each subcommand has its own options which you can see in their help.
- rclone serve <protocol> [opts] <remote> [flags]
- Options
- -h, --help help for serve
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- - rclone serve dlna - Serve remote:path over DLNA
- - rclone serve ftp - Serve remote:path over FTP.
- - rclone serve http - Serve the remote over HTTP.
- - rclone serve restic - Serve the remote for restic’s REST API.
- - rclone serve sftp - Serve the remote over SFTP.
- - rclone serve webdav - Serve remote:path over webdav.
- rclone serve dlna
- Serve remote:path over DLNA
- Synopsis
- rclone serve dlna is a DLNA media server for media stored in a rclone
- remote. Many devices, such as the Xbox and PlayStation, can
- automatically discover this server in the LAN and play audio/video from
- it. VLC is also supported. Service discovery uses UDP multicast packets
- (SSDP) and will thus only work on LANs.
- Rclone will list all files present in the remote, without filtering
- based on media formats or file extensions. Additionally, there is no
- media transcoding support. This means that some players might show files
- that they are not able to play back correctly.
- Server options
- Use –addr to specify which IP address and port the server should listen
- on, eg –addr 1.2.3.4:8000 or –addr :8080 to listen to all IPs.
- Use –name to choose the friendly server name, which is by default
- “rclone (hostname)”.
- Use –log-trace in conjunction with -vv to enable additional debug
- logging of all UPNP traffic.
- Directory Cache
- Using the --dir-cache-time flag, you can set how long a directory should
- be considered up to date and not refreshed from the backend. Changes
- made locally in the mount may appear immediately or invalidate the
- cache. However, changes done on the remote will only be picked up once
- the cache expires.
- Alternatively, you can send a SIGHUP signal to rclone for it to flush
- all directory caches, regardless of how old they are. Assuming only one
- rclone instance is running, you can reset the cache like this:
- kill -SIGHUP $(pidof rclone)
- If you configure rclone with a remote control then you can use rclone rc
- to flush the whole directory cache:
- rclone rc vfs/forget
- Or individual files or directories:
- rclone rc vfs/forget file=path/to/file dir=path/to/dir
- File Buffering
- The --buffer-size flag determines the amount of memory, that will be
- used to buffer data in advance.
- Each open file descriptor will try to keep the specified amount of data
- in memory at all times. The buffered data is bound to one file
- descriptor and won’t be shared between multiple open file descriptors of
- the same file.
- This flag is a upper limit for the used memory per file descriptor. The
- buffer will only use memory for data that is downloaded but not not yet
- read. If the buffer is empty, only a small amount of memory will be
- used. The maximum memory used by rclone for buffering can be up to
- --buffer-size * open files.
- File Caching
- These flags control the VFS file caching options. The VFS layer is used
- by rclone mount to make a cloud storage system work more like a normal
- file system.
- You’ll need to enable VFS caching if you want, for example, to read and
- write simultaneously to a file. See below for more details.
- Note that the VFS cache works in addition to the cache backend and you
- may find that you need one or the other or both.
- --cache-dir string Directory rclone will use for caching.
- --vfs-cache-max-age duration Max age of objects in the cache. (default 1h0m0s)
- --vfs-cache-mode string Cache mode off|minimal|writes|full (default "off")
- --vfs-cache-poll-interval duration Interval to poll the cache for stale objects. (default 1m0s)
- --vfs-cache-max-size int Max total size of objects in the cache. (default off)
- If run with -vv rclone will print the location of the file cache. The
- files are stored in the user cache file area which is OS dependent but
- can be controlled with --cache-dir or setting the appropriate
- environment variable.
- The cache has 4 different modes selected by --vfs-cache-mode. The higher
- the cache mode the more compatible rclone becomes at the cost of using
- disk space.
- Note that files are written back to the remote only when they are closed
- so if rclone is quit or dies with open files then these won’t get
- written back to the remote. However they will still be in the on disk
- cache.
- If using –vfs-cache-max-size note that the cache may exceed this size
- for two reasons. Firstly because it is only checked every
- –vfs-cache-poll-interval. Secondly because open files cannot be evicted
- from the cache.
- –vfs-cache-mode off
- In this mode the cache will read directly from the remote and write
- directly to the remote without caching anything on disk.
- This will mean some operations are not possible
- - Files can’t be opened for both read AND write
- - Files opened for write can’t be seeked
- - Existing files opened for write must have O_TRUNC set
- - Files open for read with O_TRUNC will be opened write only
- - Files open for write only will behave as if O_TRUNC was supplied
- - Open modes O_APPEND, O_TRUNC are ignored
- - If an upload fails it can’t be retried
- –vfs-cache-mode minimal
- This is very similar to “off” except that files opened for read AND
- write will be buffered to disks. This means that files opened for write
- will be a lot more compatible, but uses the minimal disk space.
- These operations are not possible
- - Files opened for write only can’t be seeked
- - Existing files opened for write must have O_TRUNC set
- - Files opened for write only will ignore O_APPEND, O_TRUNC
- - If an upload fails it can’t be retried
- –vfs-cache-mode writes
- In this mode files opened for read only are still read directly from the
- remote, write only and read/write files are buffered to disk first.
- This mode should support all normal file system operations.
- If an upload fails it will be retried up to –low-level-retries times.
- –vfs-cache-mode full
- In this mode all reads and writes are buffered to and from disk. When a
- file is opened for read it will be downloaded in its entirety first.
- This may be appropriate for your needs, or you may prefer to look at the
- cache backend which does a much more sophisticated job of caching,
- including caching directory hierarchies and chunks of files.
- In this mode, unlike the others, when a file is written to the disk, it
- will be kept on the disk after it is written to the remote. It will be
- purged on a schedule according to --vfs-cache-max-age.
- This mode should support all normal file system operations.
- If an upload or download fails it will be retried up to
- –low-level-retries times.
- rclone serve dlna remote:path [flags]
- Options
- --addr string ip:port or :port to bind the DLNA http server to. (default ":7879")
- --dir-cache-time duration Time to cache directory entries for. (default 5m0s)
- --dir-perms FileMode Directory permissions (default 0777)
- --file-perms FileMode File permissions (default 0666)
- --gid uint32 Override the gid field set by the filesystem. (default 1000)
- -h, --help help for dlna
- --log-trace enable trace logging of SOAP traffic
- --name string name of DLNA server
- --no-checksum Don't compare checksums on up/download.
- --no-modtime Don't read/write the modification time (can speed things up).
- --no-seek Don't allow seeking in files.
- --poll-interval duration Time to wait between polling for changes. Must be smaller than dir-cache-time. Only on supported remotes. Set to 0 to disable. (default 1m0s)
- --read-only Mount read-only.
- --uid uint32 Override the uid field set by the filesystem. (default 1000)
- --umask int Override the permission bits set by the filesystem. (default 2)
- --vfs-cache-max-age duration Max age of objects in the cache. (default 1h0m0s)
- --vfs-cache-max-size SizeSuffix Max total size of objects in the cache. (default off)
- --vfs-cache-mode CacheMode Cache mode off|minimal|writes|full (default off)
- --vfs-cache-poll-interval duration Interval to poll the cache for stale objects. (default 1m0s)
- --vfs-case-insensitive If a file name not found, find a case insensitive match.
- --vfs-read-chunk-size SizeSuffix Read the source objects in chunks. (default 128M)
- --vfs-read-chunk-size-limit SizeSuffix If greater than --vfs-read-chunk-size, double the chunk size after each chunk read, until the limit is reached. 'off' is unlimited. (default off)
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone serve - Serve a remote over a protocol.
- rclone serve ftp
- Serve remote:path over FTP.
- Synopsis
- rclone serve ftp implements a basic ftp server to serve the remote over
- FTP protocol. This can be viewed with a ftp client or you can make a
- remote of type ftp to read and write it.
- Server options
- Use –addr to specify which IP address and port the server should listen
- on, eg –addr 1.2.3.4:8000 or –addr :8080 to listen to all IPs. By
- default it only listens on localhost. You can use port :0 to let the OS
- choose an available port.
- If you set –addr to listen on a public or LAN accessible IP address then
- using Authentication is advised - see the next section for info.
- Authentication
- By default this will serve files without needing a login.
- You can set a single username and password with the –user and –pass
- flags.
- Directory Cache
- Using the --dir-cache-time flag, you can set how long a directory should
- be considered up to date and not refreshed from the backend. Changes
- made locally in the mount may appear immediately or invalidate the
- cache. However, changes done on the remote will only be picked up once
- the cache expires.
- Alternatively, you can send a SIGHUP signal to rclone for it to flush
- all directory caches, regardless of how old they are. Assuming only one
- rclone instance is running, you can reset the cache like this:
- kill -SIGHUP $(pidof rclone)
- If you configure rclone with a remote control then you can use rclone rc
- to flush the whole directory cache:
- rclone rc vfs/forget
- Or individual files or directories:
- rclone rc vfs/forget file=path/to/file dir=path/to/dir
- File Buffering
- The --buffer-size flag determines the amount of memory, that will be
- used to buffer data in advance.
- Each open file descriptor will try to keep the specified amount of data
- in memory at all times. The buffered data is bound to one file
- descriptor and won’t be shared between multiple open file descriptors of
- the same file.
- This flag is a upper limit for the used memory per file descriptor. The
- buffer will only use memory for data that is downloaded but not not yet
- read. If the buffer is empty, only a small amount of memory will be
- used. The maximum memory used by rclone for buffering can be up to
- --buffer-size * open files.
- File Caching
- These flags control the VFS file caching options. The VFS layer is used
- by rclone mount to make a cloud storage system work more like a normal
- file system.
- You’ll need to enable VFS caching if you want, for example, to read and
- write simultaneously to a file. See below for more details.
- Note that the VFS cache works in addition to the cache backend and you
- may find that you need one or the other or both.
- --cache-dir string Directory rclone will use for caching.
- --vfs-cache-max-age duration Max age of objects in the cache. (default 1h0m0s)
- --vfs-cache-mode string Cache mode off|minimal|writes|full (default "off")
- --vfs-cache-poll-interval duration Interval to poll the cache for stale objects. (default 1m0s)
- --vfs-cache-max-size int Max total size of objects in the cache. (default off)
- If run with -vv rclone will print the location of the file cache. The
- files are stored in the user cache file area which is OS dependent but
- can be controlled with --cache-dir or setting the appropriate
- environment variable.
- The cache has 4 different modes selected by --vfs-cache-mode. The higher
- the cache mode the more compatible rclone becomes at the cost of using
- disk space.
- Note that files are written back to the remote only when they are closed
- so if rclone is quit or dies with open files then these won’t get
- written back to the remote. However they will still be in the on disk
- cache.
- If using –vfs-cache-max-size note that the cache may exceed this size
- for two reasons. Firstly because it is only checked every
- –vfs-cache-poll-interval. Secondly because open files cannot be evicted
- from the cache.
- –vfs-cache-mode off
- In this mode the cache will read directly from the remote and write
- directly to the remote without caching anything on disk.
- This will mean some operations are not possible
- - Files can’t be opened for both read AND write
- - Files opened for write can’t be seeked
- - Existing files opened for write must have O_TRUNC set
- - Files open for read with O_TRUNC will be opened write only
- - Files open for write only will behave as if O_TRUNC was supplied
- - Open modes O_APPEND, O_TRUNC are ignored
- - If an upload fails it can’t be retried
- –vfs-cache-mode minimal
- This is very similar to “off” except that files opened for read AND
- write will be buffered to disks. This means that files opened for write
- will be a lot more compatible, but uses the minimal disk space.
- These operations are not possible
- - Files opened for write only can’t be seeked
- - Existing files opened for write must have O_TRUNC set
- - Files opened for write only will ignore O_APPEND, O_TRUNC
- - If an upload fails it can’t be retried
- –vfs-cache-mode writes
- In this mode files opened for read only are still read directly from the
- remote, write only and read/write files are buffered to disk first.
- This mode should support all normal file system operations.
- If an upload fails it will be retried up to –low-level-retries times.
- –vfs-cache-mode full
- In this mode all reads and writes are buffered to and from disk. When a
- file is opened for read it will be downloaded in its entirety first.
- This may be appropriate for your needs, or you may prefer to look at the
- cache backend which does a much more sophisticated job of caching,
- including caching directory hierarchies and chunks of files.
- In this mode, unlike the others, when a file is written to the disk, it
- will be kept on the disk after it is written to the remote. It will be
- purged on a schedule according to --vfs-cache-max-age.
- This mode should support all normal file system operations.
- If an upload or download fails it will be retried up to
- –low-level-retries times.
- Auth Proxy
- If you supply the parameter --auth-proxy /path/to/program then rclone
- will use that program to generate backends on the fly which then are
- used to authenticate incoming requests. This uses a simple JSON based
- protocl with input on STDIN and output on STDOUT.
- There is an example program bin/test_proxy.py in the rclone source code.
- The program’s job is to take a user and pass on the input and turn those
- into the config for a backend on STDOUT in JSON format. This config will
- have any default parameters for the backend added, but it won’t use
- configuration from environment variables or command line options - it is
- the job of the proxy program to make a complete config.
- This config generated must have this extra parameter - _root - root to
- use for the backend
- And it may have this parameter - _obscure - comma separated strings for
- parameters to obscure
- For example the program might take this on STDIN
- {
- "user": "me",
- "pass": "mypassword"
- }
- And return this on STDOUT
- {
- "type": "sftp",
- "_root": "",
- "_obscure": "pass",
- "user": "me",
- "pass": "mypassword",
- "host": "sftp.example.com"
- }
- This would mean that an SFTP backend would be created on the fly for the
- user and pass returned in the output to the host given. Note that since
- _obscure is set to pass, rclone will obscure the pass parameter before
- creating the backend (which is required for sftp backends).
- The progam can manipulate the supplied user in any way, for example to
- make proxy to many different sftp backends, you could make the user be
- user@example.com and then set the host to example.com in the output and
- the user to user. For security you’d probably want to restrict the host
- to a limited list.
- Note that an internal cache is keyed on user so only use that for
- configuration, don’t use pass. This also means that if a user’s password
- is changed the cache will need to expire (which takes 5 mins) before it
- takes effect.
- This can be used to build general purpose proxies to any kind of backend
- that rclone supports.
- rclone serve ftp remote:path [flags]
- Options
- --addr string IPaddress:Port or :Port to bind server to. (default "localhost:2121")
- --auth-proxy string A program to use to create the backend from the auth.
- --dir-cache-time duration Time to cache directory entries for. (default 5m0s)
- --dir-perms FileMode Directory permissions (default 0777)
- --file-perms FileMode File permissions (default 0666)
- --gid uint32 Override the gid field set by the filesystem. (default 1000)
- -h, --help help for ftp
- --no-checksum Don't compare checksums on up/download.
- --no-modtime Don't read/write the modification time (can speed things up).
- --no-seek Don't allow seeking in files.
- --pass string Password for authentication. (empty value allow every password)
- --passive-port string Passive port range to use. (default "30000-32000")
- --poll-interval duration Time to wait between polling for changes. Must be smaller than dir-cache-time. Only on supported remotes. Set to 0 to disable. (default 1m0s)
- --public-ip string Public IP address to advertise for passive connections.
- --read-only Mount read-only.
- --uid uint32 Override the uid field set by the filesystem. (default 1000)
- --umask int Override the permission bits set by the filesystem. (default 2)
- --user string User name for authentication. (default "anonymous")
- --vfs-cache-max-age duration Max age of objects in the cache. (default 1h0m0s)
- --vfs-cache-max-size SizeSuffix Max total size of objects in the cache. (default off)
- --vfs-cache-mode CacheMode Cache mode off|minimal|writes|full (default off)
- --vfs-cache-poll-interval duration Interval to poll the cache for stale objects. (default 1m0s)
- --vfs-case-insensitive If a file name not found, find a case insensitive match.
- --vfs-read-chunk-size SizeSuffix Read the source objects in chunks. (default 128M)
- --vfs-read-chunk-size-limit SizeSuffix If greater than --vfs-read-chunk-size, double the chunk size after each chunk read, until the limit is reached. 'off' is unlimited. (default off)
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone serve - Serve a remote over a protocol.
- rclone serve http
- Serve the remote over HTTP.
- Synopsis
- rclone serve http implements a basic web server to serve the remote over
- HTTP. This can be viewed in a web browser or you can make a remote of
- type http read from it.
- You can use the filter flags (eg –include, –exclude) to control what is
- served.
- The server will log errors. Use -v to see access logs.
- –bwlimit will be respected for file transfers. Use –stats to control the
- stats printing.
- Server options
- Use –addr to specify which IP address and port the server should listen
- on, eg –addr 1.2.3.4:8000 or –addr :8080 to listen to all IPs. By
- default it only listens on localhost. You can use port :0 to let the OS
- choose an available port.
- If you set –addr to listen on a public or LAN accessible IP address then
- using Authentication is advised - see the next section for info.
- –server-read-timeout and –server-write-timeout can be used to control
- the timeouts on the server. Note that this is the total time for a
- transfer.
- –max-header-bytes controls the maximum number of bytes the server will
- accept in the HTTP header.
- –baseurl controls the URL prefix that rclone serves from. By default
- rclone will serve from the root. If you used –baseurl “/rclone” then
- rclone would serve from a URL starting with “/rclone/”. This is useful
- if you wish to proxy rclone serve. Rclone automatically inserts leading
- and trailing “/” on –baseurl, so –baseurl “rclone”, –baseurl “/rclone”
- and –baseurl “/rclone/” are all treated identically.
- Authentication
- By default this will serve files without needing a login.
- You can either use an htpasswd file which can take lots of users, or set
- a single username and password with the –user and –pass flags.
- Use –htpasswd /path/to/htpasswd to provide an htpasswd file. This is in
- standard apache format and supports MD5, SHA1 and BCrypt for basic
- authentication. Bcrypt is recommended.
- To create an htpasswd file:
- touch htpasswd
- htpasswd -B htpasswd user
- htpasswd -B htpasswd anotherUser
- The password file can be updated while rclone is running.
- Use –realm to set the authentication realm.
- SSL/TLS
- By default this will serve over http. If you want you can serve over
- https. You will need to supply the –cert and –key flags. If you wish to
- do client side certificate validation then you will need to supply
- –client-ca also.
- –cert should be a either a PEM encoded certificate or a concatenation of
- that with the CA certificate. –key should be the PEM encoded private key
- and –client-ca should be the PEM encoded client certificate authority
- certificate.
- Directory Cache
- Using the --dir-cache-time flag, you can set how long a directory should
- be considered up to date and not refreshed from the backend. Changes
- made locally in the mount may appear immediately or invalidate the
- cache. However, changes done on the remote will only be picked up once
- the cache expires.
- Alternatively, you can send a SIGHUP signal to rclone for it to flush
- all directory caches, regardless of how old they are. Assuming only one
- rclone instance is running, you can reset the cache like this:
- kill -SIGHUP $(pidof rclone)
- If you configure rclone with a remote control then you can use rclone rc
- to flush the whole directory cache:
- rclone rc vfs/forget
- Or individual files or directories:
- rclone rc vfs/forget file=path/to/file dir=path/to/dir
- File Buffering
- The --buffer-size flag determines the amount of memory, that will be
- used to buffer data in advance.
- Each open file descriptor will try to keep the specified amount of data
- in memory at all times. The buffered data is bound to one file
- descriptor and won’t be shared between multiple open file descriptors of
- the same file.
- This flag is a upper limit for the used memory per file descriptor. The
- buffer will only use memory for data that is downloaded but not not yet
- read. If the buffer is empty, only a small amount of memory will be
- used. The maximum memory used by rclone for buffering can be up to
- --buffer-size * open files.
- File Caching
- These flags control the VFS file caching options. The VFS layer is used
- by rclone mount to make a cloud storage system work more like a normal
- file system.
- You’ll need to enable VFS caching if you want, for example, to read and
- write simultaneously to a file. See below for more details.
- Note that the VFS cache works in addition to the cache backend and you
- may find that you need one or the other or both.
- --cache-dir string Directory rclone will use for caching.
- --vfs-cache-max-age duration Max age of objects in the cache. (default 1h0m0s)
- --vfs-cache-mode string Cache mode off|minimal|writes|full (default "off")
- --vfs-cache-poll-interval duration Interval to poll the cache for stale objects. (default 1m0s)
- --vfs-cache-max-size int Max total size of objects in the cache. (default off)
- If run with -vv rclone will print the location of the file cache. The
- files are stored in the user cache file area which is OS dependent but
- can be controlled with --cache-dir or setting the appropriate
- environment variable.
- The cache has 4 different modes selected by --vfs-cache-mode. The higher
- the cache mode the more compatible rclone becomes at the cost of using
- disk space.
- Note that files are written back to the remote only when they are closed
- so if rclone is quit or dies with open files then these won’t get
- written back to the remote. However they will still be in the on disk
- cache.
- If using –vfs-cache-max-size note that the cache may exceed this size
- for two reasons. Firstly because it is only checked every
- –vfs-cache-poll-interval. Secondly because open files cannot be evicted
- from the cache.
- –vfs-cache-mode off
- In this mode the cache will read directly from the remote and write
- directly to the remote without caching anything on disk.
- This will mean some operations are not possible
- - Files can’t be opened for both read AND write
- - Files opened for write can’t be seeked
- - Existing files opened for write must have O_TRUNC set
- - Files open for read with O_TRUNC will be opened write only
- - Files open for write only will behave as if O_TRUNC was supplied
- - Open modes O_APPEND, O_TRUNC are ignored
- - If an upload fails it can’t be retried
- –vfs-cache-mode minimal
- This is very similar to “off” except that files opened for read AND
- write will be buffered to disks. This means that files opened for write
- will be a lot more compatible, but uses the minimal disk space.
- These operations are not possible
- - Files opened for write only can’t be seeked
- - Existing files opened for write must have O_TRUNC set
- - Files opened for write only will ignore O_APPEND, O_TRUNC
- - If an upload fails it can’t be retried
- –vfs-cache-mode writes
- In this mode files opened for read only are still read directly from the
- remote, write only and read/write files are buffered to disk first.
- This mode should support all normal file system operations.
- If an upload fails it will be retried up to –low-level-retries times.
- –vfs-cache-mode full
- In this mode all reads and writes are buffered to and from disk. When a
- file is opened for read it will be downloaded in its entirety first.
- This may be appropriate for your needs, or you may prefer to look at the
- cache backend which does a much more sophisticated job of caching,
- including caching directory hierarchies and chunks of files.
- In this mode, unlike the others, when a file is written to the disk, it
- will be kept on the disk after it is written to the remote. It will be
- purged on a schedule according to --vfs-cache-max-age.
- This mode should support all normal file system operations.
- If an upload or download fails it will be retried up to
- –low-level-retries times.
- rclone serve http remote:path [flags]
- Options
- --addr string IPaddress:Port or :Port to bind server to. (default "localhost:8080")
- --baseurl string Prefix for URLs - leave blank for root.
- --cert string SSL PEM key (concatenation of certificate and CA certificate)
- --client-ca string Client certificate authority to verify clients with
- --dir-cache-time duration Time to cache directory entries for. (default 5m0s)
- --dir-perms FileMode Directory permissions (default 0777)
- --file-perms FileMode File permissions (default 0666)
- --gid uint32 Override the gid field set by the filesystem. (default 1000)
- -h, --help help for http
- --htpasswd string htpasswd file - if not provided no authentication is done
- --key string SSL PEM Private key
- --max-header-bytes int Maximum size of request header (default 4096)
- --no-checksum Don't compare checksums on up/download.
- --no-modtime Don't read/write the modification time (can speed things up).
- --no-seek Don't allow seeking in files.
- --pass string Password for authentication.
- --poll-interval duration Time to wait between polling for changes. Must be smaller than dir-cache-time. Only on supported remotes. Set to 0 to disable. (default 1m0s)
- --read-only Mount read-only.
- --realm string realm for authentication (default "rclone")
- --server-read-timeout duration Timeout for server reading data (default 1h0m0s)
- --server-write-timeout duration Timeout for server writing data (default 1h0m0s)
- --uid uint32 Override the uid field set by the filesystem. (default 1000)
- --umask int Override the permission bits set by the filesystem. (default 2)
- --user string User name for authentication.
- --vfs-cache-max-age duration Max age of objects in the cache. (default 1h0m0s)
- --vfs-cache-max-size SizeSuffix Max total size of objects in the cache. (default off)
- --vfs-cache-mode CacheMode Cache mode off|minimal|writes|full (default off)
- --vfs-cache-poll-interval duration Interval to poll the cache for stale objects. (default 1m0s)
- --vfs-case-insensitive If a file name not found, find a case insensitive match.
- --vfs-read-chunk-size SizeSuffix Read the source objects in chunks. (default 128M)
- --vfs-read-chunk-size-limit SizeSuffix If greater than --vfs-read-chunk-size, double the chunk size after each chunk read, until the limit is reached. 'off' is unlimited. (default off)
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone serve - Serve a remote over a protocol.
- rclone serve restic
- Serve the remote for restic’s REST API.
- Synopsis
- rclone serve restic implements restic’s REST backend API over HTTP. This
- allows restic to use rclone as a data storage mechanism for cloud
- providers that restic does not support directly.
- Restic is a command line program for doing backups.
- The server will log errors. Use -v to see access logs.
- –bwlimit will be respected for file transfers. Use –stats to control the
- stats printing.
- Setting up rclone for use by restic
- First set up a remote for your chosen cloud provider.
- Once you have set up the remote, check it is working with, for example
- “rclone lsd remote:”. You may have called the remote something other
- than “remote:” - just substitute whatever you called it in the following
- instructions.
- Now start the rclone restic server
- rclone serve restic -v remote:backup
- Where you can replace “backup” in the above by whatever path in the
- remote you wish to use.
- By default this will serve on “localhost:8080” you can change this with
- use of the “–addr” flag.
- You might wish to start this server on boot.
- Setting up restic to use rclone
- Now you can follow the restic instructions on setting up restic.
- Note that you will need restic 0.8.2 or later to interoperate with
- rclone.
- For the example above you will want to use “http://localhost:8080/” as
- the URL for the REST server.
- For example:
- $ export RESTIC_REPOSITORY=rest:http://localhost:8080/
- $ export RESTIC_PASSWORD=yourpassword
- $ restic init
- created restic backend 8b1a4b56ae at rest:http://localhost:8080/
- Please note that knowledge of your password is required to access
- the repository. Losing your password means that your data is
- irrecoverably lost.
- $ restic backup /path/to/files/to/backup
- scan [/path/to/files/to/backup]
- scanned 189 directories, 312 files in 0:00
- [0:00] 100.00% 38.128 MiB / 38.128 MiB 501 / 501 items 0 errors ETA 0:00
- duration: 0:00
- snapshot 45c8fdd8 saved
- Multiple repositories
- Note that you can use the endpoint to host multiple repositories. Do
- this by adding a directory name or path after the URL. Note that these
- MUST end with /. Eg
- $ export RESTIC_REPOSITORY=rest:http://localhost:8080/user1repo/
- # backup user1 stuff
- $ export RESTIC_REPOSITORY=rest:http://localhost:8080/user2repo/
- # backup user2 stuff
- Private repositories
- The “–private-repos” flag can be used to limit users to repositories
- starting with a path of “//”.
- Server options
- Use –addr to specify which IP address and port the server should listen
- on, eg –addr 1.2.3.4:8000 or –addr :8080 to listen to all IPs. By
- default it only listens on localhost. You can use port :0 to let the OS
- choose an available port.
- If you set –addr to listen on a public or LAN accessible IP address then
- using Authentication is advised - see the next section for info.
- –server-read-timeout and –server-write-timeout can be used to control
- the timeouts on the server. Note that this is the total time for a
- transfer.
- –max-header-bytes controls the maximum number of bytes the server will
- accept in the HTTP header.
- –baseurl controls the URL prefix that rclone serves from. By default
- rclone will serve from the root. If you used –baseurl “/rclone” then
- rclone would serve from a URL starting with “/rclone/”. This is useful
- if you wish to proxy rclone serve. Rclone automatically inserts leading
- and trailing “/” on –baseurl, so –baseurl “rclone”, –baseurl “/rclone”
- and –baseurl “/rclone/” are all treated identically.
- Authentication
- By default this will serve files without needing a login.
- You can either use an htpasswd file which can take lots of users, or set
- a single username and password with the –user and –pass flags.
- Use –htpasswd /path/to/htpasswd to provide an htpasswd file. This is in
- standard apache format and supports MD5, SHA1 and BCrypt for basic
- authentication. Bcrypt is recommended.
- To create an htpasswd file:
- touch htpasswd
- htpasswd -B htpasswd user
- htpasswd -B htpasswd anotherUser
- The password file can be updated while rclone is running.
- Use –realm to set the authentication realm.
- SSL/TLS
- By default this will serve over http. If you want you can serve over
- https. You will need to supply the –cert and –key flags. If you wish to
- do client side certificate validation then you will need to supply
- –client-ca also.
- –cert should be a either a PEM encoded certificate or a concatenation of
- that with the CA certificate. –key should be the PEM encoded private key
- and –client-ca should be the PEM encoded client certificate authority
- certificate.
- rclone serve restic remote:path [flags]
- Options
- --addr string IPaddress:Port or :Port to bind server to. (default "localhost:8080")
- --append-only disallow deletion of repository data
- --baseurl string Prefix for URLs - leave blank for root.
- --cert string SSL PEM key (concatenation of certificate and CA certificate)
- --client-ca string Client certificate authority to verify clients with
- -h, --help help for restic
- --htpasswd string htpasswd file - if not provided no authentication is done
- --key string SSL PEM Private key
- --max-header-bytes int Maximum size of request header (default 4096)
- --pass string Password for authentication.
- --private-repos users can only access their private repo
- --realm string realm for authentication (default "rclone")
- --server-read-timeout duration Timeout for server reading data (default 1h0m0s)
- --server-write-timeout duration Timeout for server writing data (default 1h0m0s)
- --stdio run an HTTP2 server on stdin/stdout
- --user string User name for authentication.
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone serve - Serve a remote over a protocol.
- rclone serve sftp
- Serve the remote over SFTP.
- Synopsis
- rclone serve sftp implements an SFTP server to serve the remote over
- SFTP. This can be used with an SFTP client or you can make a remote of
- type sftp to use with it.
- You can use the filter flags (eg –include, –exclude) to control what is
- served.
- The server will log errors. Use -v to see access logs.
- –bwlimit will be respected for file transfers. Use –stats to control the
- stats printing.
- You must provide some means of authentication, either with –user/–pass,
- an authorized keys file (specify location with –authorized-keys - the
- default is the same as ssh) or set the –no-auth flag for no
- authentication when logging in.
- Note that this also implements a small number of shell commands so that
- it can provide md5sum/sha1sum/df information for the rclone sftp
- backend. This means that is can support SHA1SUMs, MD5SUMs and the about
- command when paired with the rclone sftp backend.
- If you don’t supply a –key then rclone will generate one and cache it
- for later use.
- By default the server binds to localhost:2022 - if you want it to be
- reachable externally then supply “–addr :2022” for example.
- Note that the default of “–vfs-cache-mode off” is fine for the rclone
- sftp backend, but it may not be with other SFTP clients.
- Directory Cache
- Using the --dir-cache-time flag, you can set how long a directory should
- be considered up to date and not refreshed from the backend. Changes
- made locally in the mount may appear immediately or invalidate the
- cache. However, changes done on the remote will only be picked up once
- the cache expires.
- Alternatively, you can send a SIGHUP signal to rclone for it to flush
- all directory caches, regardless of how old they are. Assuming only one
- rclone instance is running, you can reset the cache like this:
- kill -SIGHUP $(pidof rclone)
- If you configure rclone with a remote control then you can use rclone rc
- to flush the whole directory cache:
- rclone rc vfs/forget
- Or individual files or directories:
- rclone rc vfs/forget file=path/to/file dir=path/to/dir
- File Buffering
- The --buffer-size flag determines the amount of memory, that will be
- used to buffer data in advance.
- Each open file descriptor will try to keep the specified amount of data
- in memory at all times. The buffered data is bound to one file
- descriptor and won’t be shared between multiple open file descriptors of
- the same file.
- This flag is a upper limit for the used memory per file descriptor. The
- buffer will only use memory for data that is downloaded but not not yet
- read. If the buffer is empty, only a small amount of memory will be
- used. The maximum memory used by rclone for buffering can be up to
- --buffer-size * open files.
- File Caching
- These flags control the VFS file caching options. The VFS layer is used
- by rclone mount to make a cloud storage system work more like a normal
- file system.
- You’ll need to enable VFS caching if you want, for example, to read and
- write simultaneously to a file. See below for more details.
- Note that the VFS cache works in addition to the cache backend and you
- may find that you need one or the other or both.
- --cache-dir string Directory rclone will use for caching.
- --vfs-cache-max-age duration Max age of objects in the cache. (default 1h0m0s)
- --vfs-cache-mode string Cache mode off|minimal|writes|full (default "off")
- --vfs-cache-poll-interval duration Interval to poll the cache for stale objects. (default 1m0s)
- --vfs-cache-max-size int Max total size of objects in the cache. (default off)
- If run with -vv rclone will print the location of the file cache. The
- files are stored in the user cache file area which is OS dependent but
- can be controlled with --cache-dir or setting the appropriate
- environment variable.
- The cache has 4 different modes selected by --vfs-cache-mode. The higher
- the cache mode the more compatible rclone becomes at the cost of using
- disk space.
- Note that files are written back to the remote only when they are closed
- so if rclone is quit or dies with open files then these won’t get
- written back to the remote. However they will still be in the on disk
- cache.
- If using –vfs-cache-max-size note that the cache may exceed this size
- for two reasons. Firstly because it is only checked every
- –vfs-cache-poll-interval. Secondly because open files cannot be evicted
- from the cache.
- –vfs-cache-mode off
- In this mode the cache will read directly from the remote and write
- directly to the remote without caching anything on disk.
- This will mean some operations are not possible
- - Files can’t be opened for both read AND write
- - Files opened for write can’t be seeked
- - Existing files opened for write must have O_TRUNC set
- - Files open for read with O_TRUNC will be opened write only
- - Files open for write only will behave as if O_TRUNC was supplied
- - Open modes O_APPEND, O_TRUNC are ignored
- - If an upload fails it can’t be retried
- –vfs-cache-mode minimal
- This is very similar to “off” except that files opened for read AND
- write will be buffered to disks. This means that files opened for write
- will be a lot more compatible, but uses the minimal disk space.
- These operations are not possible
- - Files opened for write only can’t be seeked
- - Existing files opened for write must have O_TRUNC set
- - Files opened for write only will ignore O_APPEND, O_TRUNC
- - If an upload fails it can’t be retried
- –vfs-cache-mode writes
- In this mode files opened for read only are still read directly from the
- remote, write only and read/write files are buffered to disk first.
- This mode should support all normal file system operations.
- If an upload fails it will be retried up to –low-level-retries times.
- –vfs-cache-mode full
- In this mode all reads and writes are buffered to and from disk. When a
- file is opened for read it will be downloaded in its entirety first.
- This may be appropriate for your needs, or you may prefer to look at the
- cache backend which does a much more sophisticated job of caching,
- including caching directory hierarchies and chunks of files.
- In this mode, unlike the others, when a file is written to the disk, it
- will be kept on the disk after it is written to the remote. It will be
- purged on a schedule according to --vfs-cache-max-age.
- This mode should support all normal file system operations.
- If an upload or download fails it will be retried up to
- –low-level-retries times.
- Auth Proxy
- If you supply the parameter --auth-proxy /path/to/program then rclone
- will use that program to generate backends on the fly which then are
- used to authenticate incoming requests. This uses a simple JSON based
- protocl with input on STDIN and output on STDOUT.
- There is an example program bin/test_proxy.py in the rclone source code.
- The program’s job is to take a user and pass on the input and turn those
- into the config for a backend on STDOUT in JSON format. This config will
- have any default parameters for the backend added, but it won’t use
- configuration from environment variables or command line options - it is
- the job of the proxy program to make a complete config.
- This config generated must have this extra parameter - _root - root to
- use for the backend
- And it may have this parameter - _obscure - comma separated strings for
- parameters to obscure
- For example the program might take this on STDIN
- {
- "user": "me",
- "pass": "mypassword"
- }
- And return this on STDOUT
- {
- "type": "sftp",
- "_root": "",
- "_obscure": "pass",
- "user": "me",
- "pass": "mypassword",
- "host": "sftp.example.com"
- }
- This would mean that an SFTP backend would be created on the fly for the
- user and pass returned in the output to the host given. Note that since
- _obscure is set to pass, rclone will obscure the pass parameter before
- creating the backend (which is required for sftp backends).
- The progam can manipulate the supplied user in any way, for example to
- make proxy to many different sftp backends, you could make the user be
- user@example.com and then set the host to example.com in the output and
- the user to user. For security you’d probably want to restrict the host
- to a limited list.
- Note that an internal cache is keyed on user so only use that for
- configuration, don’t use pass. This also means that if a user’s password
- is changed the cache will need to expire (which takes 5 mins) before it
- takes effect.
- This can be used to build general purpose proxies to any kind of backend
- that rclone supports.
- rclone serve sftp remote:path [flags]
- Options
- --addr string IPaddress:Port or :Port to bind server to. (default "localhost:2022")
- --auth-proxy string A program to use to create the backend from the auth.
- --authorized-keys string Authorized keys file (default "~/.ssh/authorized_keys")
- --dir-cache-time duration Time to cache directory entries for. (default 5m0s)
- --dir-perms FileMode Directory permissions (default 0777)
- --file-perms FileMode File permissions (default 0666)
- --gid uint32 Override the gid field set by the filesystem. (default 1000)
- -h, --help help for sftp
- --key string SSH private key file (leave blank to auto generate)
- --no-auth Allow connections with no authentication if set.
- --no-checksum Don't compare checksums on up/download.
- --no-modtime Don't read/write the modification time (can speed things up).
- --no-seek Don't allow seeking in files.
- --pass string Password for authentication.
- --poll-interval duration Time to wait between polling for changes. Must be smaller than dir-cache-time. Only on supported remotes. Set to 0 to disable. (default 1m0s)
- --read-only Mount read-only.
- --uid uint32 Override the uid field set by the filesystem. (default 1000)
- --umask int Override the permission bits set by the filesystem. (default 2)
- --user string User name for authentication.
- --vfs-cache-max-age duration Max age of objects in the cache. (default 1h0m0s)
- --vfs-cache-max-size SizeSuffix Max total size of objects in the cache. (default off)
- --vfs-cache-mode CacheMode Cache mode off|minimal|writes|full (default off)
- --vfs-cache-poll-interval duration Interval to poll the cache for stale objects. (default 1m0s)
- --vfs-case-insensitive If a file name not found, find a case insensitive match.
- --vfs-read-chunk-size SizeSuffix Read the source objects in chunks. (default 128M)
- --vfs-read-chunk-size-limit SizeSuffix If greater than --vfs-read-chunk-size, double the chunk size after each chunk read, until the limit is reached. 'off' is unlimited. (default off)
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone serve - Serve a remote over a protocol.
- rclone serve webdav
- Serve remote:path over webdav.
- Synopsis
- rclone serve webdav implements a basic webdav server to serve the remote
- over HTTP via the webdav protocol. This can be viewed with a webdav
- client, through a web browser, or you can make a remote of type webdav
- to read and write it.
- Webdav options
- –etag-hash
- This controls the ETag header. Without this flag the ETag will be based
- on the ModTime and Size of the object.
- If this flag is set to “auto” then rclone will choose the first
- supported hash on the backend or you can use a named hash such as “MD5”
- or “SHA-1”.
- Use “rclone hashsum” to see the full list.
- Server options
- Use –addr to specify which IP address and port the server should listen
- on, eg –addr 1.2.3.4:8000 or –addr :8080 to listen to all IPs. By
- default it only listens on localhost. You can use port :0 to let the OS
- choose an available port.
- If you set –addr to listen on a public or LAN accessible IP address then
- using Authentication is advised - see the next section for info.
- –server-read-timeout and –server-write-timeout can be used to control
- the timeouts on the server. Note that this is the total time for a
- transfer.
- –max-header-bytes controls the maximum number of bytes the server will
- accept in the HTTP header.
- –baseurl controls the URL prefix that rclone serves from. By default
- rclone will serve from the root. If you used –baseurl “/rclone” then
- rclone would serve from a URL starting with “/rclone/”. This is useful
- if you wish to proxy rclone serve. Rclone automatically inserts leading
- and trailing “/” on –baseurl, so –baseurl “rclone”, –baseurl “/rclone”
- and –baseurl “/rclone/” are all treated identically.
- Authentication
- By default this will serve files without needing a login.
- You can either use an htpasswd file which can take lots of users, or set
- a single username and password with the –user and –pass flags.
- Use –htpasswd /path/to/htpasswd to provide an htpasswd file. This is in
- standard apache format and supports MD5, SHA1 and BCrypt for basic
- authentication. Bcrypt is recommended.
- To create an htpasswd file:
- touch htpasswd
- htpasswd -B htpasswd user
- htpasswd -B htpasswd anotherUser
- The password file can be updated while rclone is running.
- Use –realm to set the authentication realm.
- SSL/TLS
- By default this will serve over http. If you want you can serve over
- https. You will need to supply the –cert and –key flags. If you wish to
- do client side certificate validation then you will need to supply
- –client-ca also.
- –cert should be a either a PEM encoded certificate or a concatenation of
- that with the CA certificate. –key should be the PEM encoded private key
- and –client-ca should be the PEM encoded client certificate authority
- certificate.
- Directory Cache
- Using the --dir-cache-time flag, you can set how long a directory should
- be considered up to date and not refreshed from the backend. Changes
- made locally in the mount may appear immediately or invalidate the
- cache. However, changes done on the remote will only be picked up once
- the cache expires.
- Alternatively, you can send a SIGHUP signal to rclone for it to flush
- all directory caches, regardless of how old they are. Assuming only one
- rclone instance is running, you can reset the cache like this:
- kill -SIGHUP $(pidof rclone)
- If you configure rclone with a remote control then you can use rclone rc
- to flush the whole directory cache:
- rclone rc vfs/forget
- Or individual files or directories:
- rclone rc vfs/forget file=path/to/file dir=path/to/dir
- File Buffering
- The --buffer-size flag determines the amount of memory, that will be
- used to buffer data in advance.
- Each open file descriptor will try to keep the specified amount of data
- in memory at all times. The buffered data is bound to one file
- descriptor and won’t be shared between multiple open file descriptors of
- the same file.
- This flag is a upper limit for the used memory per file descriptor. The
- buffer will only use memory for data that is downloaded but not not yet
- read. If the buffer is empty, only a small amount of memory will be
- used. The maximum memory used by rclone for buffering can be up to
- --buffer-size * open files.
- File Caching
- These flags control the VFS file caching options. The VFS layer is used
- by rclone mount to make a cloud storage system work more like a normal
- file system.
- You’ll need to enable VFS caching if you want, for example, to read and
- write simultaneously to a file. See below for more details.
- Note that the VFS cache works in addition to the cache backend and you
- may find that you need one or the other or both.
- --cache-dir string Directory rclone will use for caching.
- --vfs-cache-max-age duration Max age of objects in the cache. (default 1h0m0s)
- --vfs-cache-mode string Cache mode off|minimal|writes|full (default "off")
- --vfs-cache-poll-interval duration Interval to poll the cache for stale objects. (default 1m0s)
- --vfs-cache-max-size int Max total size of objects in the cache. (default off)
- If run with -vv rclone will print the location of the file cache. The
- files are stored in the user cache file area which is OS dependent but
- can be controlled with --cache-dir or setting the appropriate
- environment variable.
- The cache has 4 different modes selected by --vfs-cache-mode. The higher
- the cache mode the more compatible rclone becomes at the cost of using
- disk space.
- Note that files are written back to the remote only when they are closed
- so if rclone is quit or dies with open files then these won’t get
- written back to the remote. However they will still be in the on disk
- cache.
- If using –vfs-cache-max-size note that the cache may exceed this size
- for two reasons. Firstly because it is only checked every
- –vfs-cache-poll-interval. Secondly because open files cannot be evicted
- from the cache.
- –vfs-cache-mode off
- In this mode the cache will read directly from the remote and write
- directly to the remote without caching anything on disk.
- This will mean some operations are not possible
- - Files can’t be opened for both read AND write
- - Files opened for write can’t be seeked
- - Existing files opened for write must have O_TRUNC set
- - Files open for read with O_TRUNC will be opened write only
- - Files open for write only will behave as if O_TRUNC was supplied
- - Open modes O_APPEND, O_TRUNC are ignored
- - If an upload fails it can’t be retried
- –vfs-cache-mode minimal
- This is very similar to “off” except that files opened for read AND
- write will be buffered to disks. This means that files opened for write
- will be a lot more compatible, but uses the minimal disk space.
- These operations are not possible
- - Files opened for write only can’t be seeked
- - Existing files opened for write must have O_TRUNC set
- - Files opened for write only will ignore O_APPEND, O_TRUNC
- - If an upload fails it can’t be retried
- –vfs-cache-mode writes
- In this mode files opened for read only are still read directly from the
- remote, write only and read/write files are buffered to disk first.
- This mode should support all normal file system operations.
- If an upload fails it will be retried up to –low-level-retries times.
- –vfs-cache-mode full
- In this mode all reads and writes are buffered to and from disk. When a
- file is opened for read it will be downloaded in its entirety first.
- This may be appropriate for your needs, or you may prefer to look at the
- cache backend which does a much more sophisticated job of caching,
- including caching directory hierarchies and chunks of files.
- In this mode, unlike the others, when a file is written to the disk, it
- will be kept on the disk after it is written to the remote. It will be
- purged on a schedule according to --vfs-cache-max-age.
- This mode should support all normal file system operations.
- If an upload or download fails it will be retried up to
- –low-level-retries times.
- Auth Proxy
- If you supply the parameter --auth-proxy /path/to/program then rclone
- will use that program to generate backends on the fly which then are
- used to authenticate incoming requests. This uses a simple JSON based
- protocl with input on STDIN and output on STDOUT.
- There is an example program bin/test_proxy.py in the rclone source code.
- The program’s job is to take a user and pass on the input and turn those
- into the config for a backend on STDOUT in JSON format. This config will
- have any default parameters for the backend added, but it won’t use
- configuration from environment variables or command line options - it is
- the job of the proxy program to make a complete config.
- This config generated must have this extra parameter - _root - root to
- use for the backend
- And it may have this parameter - _obscure - comma separated strings for
- parameters to obscure
- For example the program might take this on STDIN
- {
- "user": "me",
- "pass": "mypassword"
- }
- And return this on STDOUT
- {
- "type": "sftp",
- "_root": "",
- "_obscure": "pass",
- "user": "me",
- "pass": "mypassword",
- "host": "sftp.example.com"
- }
- This would mean that an SFTP backend would be created on the fly for the
- user and pass returned in the output to the host given. Note that since
- _obscure is set to pass, rclone will obscure the pass parameter before
- creating the backend (which is required for sftp backends).
- The progam can manipulate the supplied user in any way, for example to
- make proxy to many different sftp backends, you could make the user be
- user@example.com and then set the host to example.com in the output and
- the user to user. For security you’d probably want to restrict the host
- to a limited list.
- Note that an internal cache is keyed on user so only use that for
- configuration, don’t use pass. This also means that if a user’s password
- is changed the cache will need to expire (which takes 5 mins) before it
- takes effect.
- This can be used to build general purpose proxies to any kind of backend
- that rclone supports.
- rclone serve webdav remote:path [flags]
- Options
- --addr string IPaddress:Port or :Port to bind server to. (default "localhost:8080")
- --auth-proxy string A program to use to create the backend from the auth.
- --baseurl string Prefix for URLs - leave blank for root.
- --cert string SSL PEM key (concatenation of certificate and CA certificate)
- --client-ca string Client certificate authority to verify clients with
- --dir-cache-time duration Time to cache directory entries for. (default 5m0s)
- --dir-perms FileMode Directory permissions (default 0777)
- --disable-dir-list Disable HTML directory list on GET request for a directory
- --etag-hash string Which hash to use for the ETag, or auto or blank for off
- --file-perms FileMode File permissions (default 0666)
- --gid uint32 Override the gid field set by the filesystem. (default 1000)
- -h, --help help for webdav
- --htpasswd string htpasswd file - if not provided no authentication is done
- --key string SSL PEM Private key
- --max-header-bytes int Maximum size of request header (default 4096)
- --no-checksum Don't compare checksums on up/download.
- --no-modtime Don't read/write the modification time (can speed things up).
- --no-seek Don't allow seeking in files.
- --pass string Password for authentication.
- --poll-interval duration Time to wait between polling for changes. Must be smaller than dir-cache-time. Only on supported remotes. Set to 0 to disable. (default 1m0s)
- --read-only Mount read-only.
- --realm string realm for authentication (default "rclone")
- --server-read-timeout duration Timeout for server reading data (default 1h0m0s)
- --server-write-timeout duration Timeout for server writing data (default 1h0m0s)
- --uid uint32 Override the uid field set by the filesystem. (default 1000)
- --umask int Override the permission bits set by the filesystem. (default 2)
- --user string User name for authentication.
- --vfs-cache-max-age duration Max age of objects in the cache. (default 1h0m0s)
- --vfs-cache-max-size SizeSuffix Max total size of objects in the cache. (default off)
- --vfs-cache-mode CacheMode Cache mode off|minimal|writes|full (default off)
- --vfs-cache-poll-interval duration Interval to poll the cache for stale objects. (default 1m0s)
- --vfs-case-insensitive If a file name not found, find a case insensitive match.
- --vfs-read-chunk-size SizeSuffix Read the source objects in chunks. (default 128M)
- --vfs-read-chunk-size-limit SizeSuffix If greater than --vfs-read-chunk-size, double the chunk size after each chunk read, until the limit is reached. 'off' is unlimited. (default off)
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone serve - Serve a remote over a protocol.
- rclone settier
- Changes storage class/tier of objects in remote.
- Synopsis
- rclone settier changes storage tier or class at remote if supported. Few
- cloud storage services provides different storage classes on objects,
- for example AWS S3 and Glacier, Azure Blob storage - Hot, Cool and
- Archive, Google Cloud Storage, Regional Storage, Nearline, Coldline etc.
- Note that, certain tier changes make objects not available to access
- immediately. For example tiering to archive in azure blob storage makes
- objects in frozen state, user can restore by setting tier to Hot/Cool,
- similarly S3 to Glacier makes object inaccessible.true
- You can use it to tier single object
- rclone settier Cool remote:path/file
- Or use rclone filters to set tier on only specific files
- rclone --include "*.txt" settier Hot remote:path/dir
- Or just provide remote directory and all files in directory will be
- tiered
- rclone settier tier remote:path/dir
- rclone settier tier remote:path [flags]
- Options
- -h, --help help for settier
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone touch
- Create new file or change file modification time.
- Synopsis
- Create new file or change file modification time.
- rclone touch remote:path [flags]
- Options
- -h, --help help for touch
- -C, --no-create Do not create the file if it does not exist.
- -t, --timestamp string Change the modification times to the specified time instead of the current time of day. The argument is of the form 'YYMMDD' (ex. 17.10.30) or 'YYYY-MM-DDTHH:MM:SS' (ex. 2006-01-02T15:04:05)
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- rclone tree
- List the contents of the remote in a tree like fashion.
- Synopsis
- rclone tree lists the contents of a remote in a similar way to the unix
- tree command.
- For example
- $ rclone tree remote:path
- /
- ├── file1
- ├── file2
- ├── file3
- └── subdir
- ├── file4
- └── file5
- 1 directories, 5 files
- You can use any of the filtering options with the tree command (eg
- –include and –exclude). You can also use –fast-list.
- The tree command has many options for controlling the listing which are
- compatible with the tree command. Note that not all of them have short
- options as they conflict with rclone’s short options.
- rclone tree remote:path [flags]
- Options
- -a, --all All files are listed (list . files too).
- -C, --color Turn colorization on always.
- -d, --dirs-only List directories only.
- --dirsfirst List directories before files (-U disables).
- --full-path Print the full path prefix for each file.
- -h, --help help for tree
- --human Print the size in a more human readable way.
- --level int Descend only level directories deep.
- -D, --modtime Print the date of last modification.
- -i, --noindent Don't print indentation lines.
- --noreport Turn off file/directory count at end of tree listing.
- -o, --output string Output to file instead of stdout.
- -p, --protections Print the protections for each file.
- -Q, --quote Quote filenames with double quotes.
- -s, --size Print the size in bytes of each file.
- --sort string Select sort: name,version,size,mtime,ctime.
- --sort-ctime Sort files by last status change time.
- -t, --sort-modtime Sort files by last modification time.
- -r, --sort-reverse Reverse the order of the sort.
- -U, --unsorted Leave files unsorted.
- --version Sort files alphanumerically by version.
- See the global flags page for global options not listed here.
- SEE ALSO
- - rclone - Show help for rclone commands, flags and backends.
- Copying single files
- rclone normally syncs or copies directories. However, if the source
- remote points to a file, rclone will just copy that file. The
- destination remote must point to a directory - rclone will give the
- error
- Failed to create file system for "remote:file": is a file not a directory
- if it isn’t.
- For example, suppose you have a remote with a file in called test.jpg,
- then you could copy just that file like this
- rclone copy remote:test.jpg /tmp/download
- The file test.jpg will be placed inside /tmp/download.
- This is equivalent to specifying
- rclone copy --files-from /tmp/files remote: /tmp/download
- Where /tmp/files contains the single line
- test.jpg
- It is recommended to use copy when copying individual files, not sync.
- They have pretty much the same effect but copy will use a lot less
- memory.
- Syntax of remote paths
- The syntax of the paths passed to the rclone command are as follows.
- /path/to/dir
- This refers to the local file system.
- On Windows only \ may be used instead of / in local paths ONLY, non
- local paths must use /.
- These paths needn’t start with a leading / - if they don’t then they
- will be relative to the current directory.
- remote:path/to/dir
- This refers to a directory path/to/dir on remote: as defined in the
- config file (configured with rclone config).
- remote:/path/to/dir
- On most backends this is refers to the same directory as
- remote:path/to/dir and that format should be preferred. On a very small
- number of remotes (FTP, SFTP, Dropbox for business) this will refer to a
- different directory. On these, paths without a leading / will refer to
- your “home” directory and paths with a leading / will refer to the root.
- :backend:path/to/dir
- This is an advanced form for creating remotes on the fly. backend should
- be the name or prefix of a backend (the type in the config file) and all
- the configuration for the backend should be provided on the command line
- (or in environment variables).
- Here are some examples:
- rclone lsd --http-url https://pub.rclone.org :http:
- To list all the directories in the root of https://pub.rclone.org/.
- rclone lsf --http-url https://example.com :http:path/to/dir
- To list files and directories in https://example.com/path/to/dir/
- rclone copy --http-url https://example.com :http:path/to/dir /tmp/dir
- To copy files and directories in https://example.com/path/to/dir to
- /tmp/dir.
- rclone copy --sftp-host example.com :sftp:path/to/dir /tmp/dir
- To copy files and directories from example.com in the relative directory
- path/to/dir to /tmp/dir using sftp.
- Quoting and the shell
- When you are typing commands to your computer you are using something
- called the command line shell. This interprets various characters in an
- OS specific way.
- Here are some gotchas which may help users unfamiliar with the shell
- rules
- Linux / OSX
- If your names have spaces or shell metacharacters (eg *, ?, $, ', " etc)
- then you must quote them. Use single quotes ' by default.
- rclone copy 'Important files?' remote:backup
- If you want to send a ' you will need to use ", eg
- rclone copy "O'Reilly Reviews" remote:backup
- The rules for quoting metacharacters are complicated and if you want the
- full details you’ll have to consult the manual page for your shell.
- Windows
- If your names have spaces in you need to put them in ", eg
- rclone copy "E:\folder name\folder name\folder name" remote:backup
- If you are using the root directory on its own then don’t quote it (see
- #464 for why), eg
- rclone copy E:\ remote:backup
- Copying files or directories with : in the names
- rclone uses : to mark a remote name. This is, however, a valid filename
- component in non-Windows OSes. The remote name parser will only search
- for a : up to the first / so if you need to act on a file or directory
- like this then use the full path starting with a /, or use ./ as a
- current directory prefix.
- So to sync a directory called sync:me to a remote called remote: use
- rclone sync ./sync:me remote:path
- or
- rclone sync /full/path/to/sync:me remote:path
- Server Side Copy
- Most remotes (but not all - see the overview) support server side copy.
- This means if you want to copy one folder to another then rclone won’t
- download all the files and re-upload them; it will instruct the server
- to copy them in place.
- Eg
- rclone copy s3:oldbucket s3:newbucket
- Will copy the contents of oldbucket to newbucket without downloading and
- re-uploading.
- Remotes which don’t support server side copy WILL download and re-upload
- in this case.
- Server side copies are used with sync and copy and will be identified in
- the log when using the -v flag. The move command may also use them if
- remote doesn’t support server side move directly. This is done by
- issuing a server side copy then a delete which is much quicker than a
- download and re-upload.
- Server side copies will only be attempted if the remote names are the
- same.
- This can be used when scripting to make aged backups efficiently, eg
- rclone sync remote:current-backup remote:previous-backup
- rclone sync /path/to/files remote:current-backup
- Options
- Rclone has a number of options to control its behaviour.
- Options that take parameters can have the values passed in two ways,
- --option=value or --option value. However boolean (true/false) options
- behave slightly differently to the other options in that --boolean sets
- the option to true and the absence of the flag sets it to false. It is
- also possible to specify --boolean=false or --boolean=true. Note that
- --boolean false is not valid - this is parsed as --boolean and the false
- is parsed as an extra command line argument for rclone.
- Options which use TIME use the go time parser. A duration string is a
- possibly signed sequence of decimal numbers, each with optional fraction
- and a unit suffix, such as “300ms”, “-1.5h” or “2h45m”. Valid time units
- are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”.
- Options which use SIZE use kByte by default. However, a suffix of b for
- bytes, k for kBytes, M for MBytes, G for GBytes, T for TBytes and P for
- PBytes may be used. These are the binary units, eg 1, 2**10, 2**20,
- 2**30 respectively.
- –backup-dir=DIR
- When using sync, copy or move any files which would have been
- overwritten or deleted are moved in their original hierarchy into this
- directory.
- If --suffix is set, then the moved files will have the suffix added to
- them. If there is a file with the same path (after the suffix has been
- added) in DIR, then it will be overwritten.
- The remote in use must support server side move or copy and you must use
- the same remote as the destination of the sync. The backup directory
- must not overlap the destination directory.
- For example
- rclone sync /path/to/local remote:current --backup-dir remote:old
- will sync /path/to/local to remote:current, but for any files which
- would have been updated or deleted will be stored in remote:old.
- If running rclone from a script you might want to use today’s date as
- the directory name passed to --backup-dir to store the old files, or you
- might want to pass --suffix with today’s date.
- See --compare-dest and --copy-dest.
- –bind string
- Local address to bind to for outgoing connections. This can be an IPv4
- address (1.2.3.4), an IPv6 address (1234::789A) or host name. If the
- host name doesn’t resolve or resolves to more than one IP address it
- will give an error.
- –bwlimit=BANDWIDTH_SPEC
- This option controls the bandwidth limit. Limits can be specified in two
- ways: As a single limit, or as a timetable.
- Single limits last for the duration of the session. To use a single
- limit, specify the desired bandwidth in kBytes/s, or use a suffix
- b|k|M|G. The default is 0 which means to not limit bandwidth.
- For example, to limit bandwidth usage to 10 MBytes/s use --bwlimit 10M
- It is also possible to specify a “timetable” of limits, which will cause
- certain limits to be applied at certain times. To specify a timetable,
- format your entries as “WEEKDAY-HH:MM,BANDWIDTH
- WEEKDAY-HH:MM,BANDWIDTH…” where: WEEKDAY is optional element. It could
- be written as whole world or only using 3 first characters. HH:MM is an
- hour from 00:00 to 23:59.
- An example of a typical timetable to avoid link saturation during
- daytime working hours could be:
- --bwlimit "08:00,512 12:00,10M 13:00,512 18:00,30M 23:00,off"
- In this example, the transfer bandwidth will be every day set to
- 512kBytes/sec at 8am. At noon, it will raise to 10Mbytes/s, and drop
- back to 512kBytes/sec at 1pm. At 6pm, the bandwidth limit will be set to
- 30MBytes/s, and at 11pm it will be completely disabled (full speed).
- Anything between 11pm and 8am will remain unlimited.
- An example of timetable with WEEKDAY could be:
- --bwlimit "Mon-00:00,512 Fri-23:59,10M Sat-10:00,1M Sun-20:00,off"
- It mean that, the transfer bandwidth will be set to 512kBytes/sec on
- Monday. It will raise to 10Mbytes/s before the end of Friday. At 10:00
- on Sunday it will be set to 1Mbyte/s. From 20:00 at Sunday will be
- unlimited.
- Timeslots without weekday are extended to whole week. So this one
- example:
- --bwlimit "Mon-00:00,512 12:00,1M Sun-20:00,off"
- Is equal to this:
- --bwlimit "Mon-00:00,512Mon-12:00,1M Tue-12:00,1M Wed-12:00,1M Thu-12:00,1M Fri-12:00,1M Sat-12:00,1M Sun-12:00,1M Sun-20:00,off"
- Bandwidth limits only apply to the data transfer. They don’t apply to
- the bandwidth of the directory listings etc.
- Note that the units are Bytes/s, not Bits/s. Typically connections are
- measured in Bits/s - to convert divide by 8. For example, let’s say you
- have a 10 Mbit/s connection and you wish rclone to use half of it - 5
- Mbit/s. This is 5/8 = 0.625MByte/s so you would use a --bwlimit 0.625M
- parameter for rclone.
- On Unix systems (Linux, MacOS, …) the bandwidth limiter can be toggled
- by sending a SIGUSR2 signal to rclone. This allows to remove the
- limitations of a long running rclone transfer and to restore it back to
- the value specified with --bwlimit quickly when needed. Assuming there
- is only one rclone instance running, you can toggle the limiter like
- this:
- kill -SIGUSR2 $(pidof rclone)
- If you configure rclone with a remote control then you can use change
- the bwlimit dynamically:
- rclone rc core/bwlimit rate=1M
- –buffer-size=SIZE
- Use this sized buffer to speed up file transfers. Each --transfer will
- use this much memory for buffering.
- When using mount or cmount each open file descriptor will use this much
- memory for buffering. See the mount documentation for more details.
- Set to 0 to disable the buffering for the minimum memory usage.
- Note that the memory allocation of the buffers is influenced by the
- –use-mmap flag.
- –checkers=N
- The number of checkers to run in parallel. Checkers do the equality
- checking of files during a sync. For some storage systems (eg S3, Swift,
- Dropbox) this can take a significant amount of time so they are run in
- parallel.
- The default is to run 8 checkers in parallel.
- -c, –checksum
- Normally rclone will look at modification time and size of files to see
- if they are equal. If you set this flag then rclone will check the file
- hash and size to determine if files are equal.
- This is useful when the remote doesn’t support setting modified time and
- a more accurate sync is desired than just checking the file size.
- This is very useful when transferring between remotes which store the
- same hash type on the object, eg Drive and Swift. For details of which
- remotes support which hash type see the table in the overview section.
- Eg rclone --checksum sync s3:/bucket swift:/bucket would run much
- quicker than without the --checksum flag.
- When using this flag, rclone won’t update mtimes of remote files if they
- are incorrect as it would normally.
- –compare-dest=DIR
- When using sync, copy or move DIR is checked in addition to the
- destination for files. If a file identical to the source is found that
- file is NOT copied from source. This is useful to copy just files that
- have changed since the last backup.
- You must use the same remote as the destination of the sync. The compare
- directory must not overlap the destination directory.
- See --copy-dest and --backup-dir.
- –config=CONFIG_FILE
- Specify the location of the rclone config file.
- Normally the config file is in your home directory as a file called
- .config/rclone/rclone.conf (or .rclone.conf if created with an older
- version). If $XDG_CONFIG_HOME is set it will be at
- $XDG_CONFIG_HOME/rclone/rclone.conf.
- If there is a file rclone.conf in the same directory as the rclone
- executable it will be preferred. This file must be created manually for
- Rclone to use it, it will never be created automatically.
- If you run rclone config file you will see where the default location is
- for you.
- Use this flag to override the config location, eg
- rclone --config=".myconfig" .config.
- –contimeout=TIME
- Set the connection timeout. This should be in go time format which looks
- like 5s for 5 seconds, 10m for 10 minutes, or 3h30m.
- The connection timeout is the amount of time rclone will wait for a
- connection to go through to a remote object storage system. It is 1m by
- default.
- –copy-dest=DIR
- When using sync, copy or move DIR is checked in addition to the
- destination for files. If a file identical to the source is found that
- file is server side copied from DIR to the destination. This is useful
- for incremental backup.
- The remote in use must support server side copy and you must use the
- same remote as the destination of the sync. The compare directory must
- not overlap the destination directory.
- See --compare-dest and --backup-dir.
- –dedupe-mode MODE
- Mode to run dedupe command in. One of interactive, skip, first, newest,
- oldest, rename. The default is interactive. See the dedupe command for
- more information as to what these options mean.
- –disable FEATURE,FEATURE,…
- This disables a comma separated list of optional features. For example
- to disable server side move and server side copy use:
- --disable move,copy
- The features can be put in in any case.
- To see a list of which features can be disabled use:
- --disable help
- See the overview features and optional features to get an idea of which
- feature does what.
- This flag can be useful for debugging and in exceptional circumstances
- (eg Google Drive limiting the total volume of Server Side Copies to
- 100GB/day).
- -n, –dry-run
- Do a trial run with no permanent changes. Use this to see what rclone
- would do without actually doing it. Useful when setting up the sync
- command which deletes files in the destination.
- –expect-continue-timeout=TIME
- This specifies the amount of time to wait for a server’s first response
- headers after fully writing the request headers if the request has an
- “Expect: 100-continue” header. Not all backends support using this.
- Zero means no timeout and causes the body to be sent immediately,
- without waiting for the server to approve. This time does not include
- the time to send the request header.
- The default is 1s. Set to 0 to disable.
- –ignore-case-sync
- Using this option will cause rclone to ignore the case of the files when
- synchronizing so files will not be copied/synced when the existing
- filenames are the same, even if the casing is different.
- –ignore-checksum
- Normally rclone will check that the checksums of transferred files
- match, and give an error “corrupted on transfer” if they don’t.
- You can use this option to skip that check. You should only use it if
- you have had the “corrupted on transfer” error message and you are sure
- you might want to transfer potentially corrupted data.
- –ignore-existing
- Using this option will make rclone unconditionally skip all files that
- exist on the destination, no matter the content of these files.
- While this isn’t a generally recommended option, it can be useful in
- cases where your files change due to encryption. However, it cannot
- correct partial transfers in case a transfer was interrupted.
- –ignore-size
- Normally rclone will look at modification time and size of files to see
- if they are equal. If you set this flag then rclone will check only the
- modification time. If --checksum is set then it only checks the
- checksum.
- It will also cause rclone to skip verifying the sizes are the same after
- transfer.
- This can be useful for transferring files to and from OneDrive which
- occasionally misreports the size of image files (see #399 for more
- info).
- -I, –ignore-times
- Using this option will cause rclone to unconditionally upload all files
- regardless of the state of files on the destination.
- Normally rclone would skip any files that have the same modification
- time and are the same size (or have the same checksum if using
- --checksum).
- –immutable
- Treat source and destination files as immutable and disallow
- modification.
- With this option set, files will be created and deleted as requested,
- but existing files will never be updated. If an existing file does not
- match between the source and destination, rclone will give the error
- Source and destination exist but do not match: immutable file modified.
- Note that only commands which transfer files (e.g. sync, copy, move) are
- affected by this behavior, and only modification is disallowed. Files
- may still be deleted explicitly (e.g. delete, purge) or implicitly
- (e.g. sync, move). Use copy --immutable if it is desired to avoid
- deletion as well as modification.
- This can be useful as an additional layer of protection for immutable or
- append-only data sets (notably backup archives), where modification
- implies corruption and should not be propagated.
- –leave-root
- During rmdirs it will not remove root directory, even if it’s empty.
- –log-file=FILE
- Log all of rclone’s output to FILE. This is not active by default. This
- can be useful for tracking down problems with syncs in combination with
- the -v flag. See the Logging section for more info.
- Note that if you are using the logrotate program to manage rclone’s
- logs, then you should use the copytruncate option as rclone doesn’t have
- a signal to rotate logs.
- –log-format LIST
- Comma separated list of log format options. date, time, microseconds,
- longfile, shortfile, UTC. The default is “date,time”.
- –log-level LEVEL
- This sets the log level for rclone. The default log level is NOTICE.
- DEBUG is equivalent to -vv. It outputs lots of debug info - useful for
- bug reports and really finding out what rclone is doing.
- INFO is equivalent to -v. It outputs information about each transfer and
- prints stats once a minute by default.
- NOTICE is the default log level if no logging flags are supplied. It
- outputs very little when things are working normally. It outputs
- warnings and significant events.
- ERROR is equivalent to -q. It only outputs error messages.
- –use-json-log
- This switches the log format to JSON for rclone. The fields of json log
- are level, msg, source, time.
- –low-level-retries NUMBER
- This controls the number of low level retries rclone does.
- A low level retry is used to retry a failing operation - typically one
- HTTP request. This might be uploading a chunk of a big file for example.
- You will see low level retries in the log with the -v flag.
- This shouldn’t need to be changed from the default in normal operations.
- However, if you get a lot of low level retries you may wish to reduce
- the value so rclone moves on to a high level retry (see the --retries
- flag) quicker.
- Disable low level retries with --low-level-retries 1.
- –max-backlog=N
- This is the maximum allowable backlog of files in a sync/copy/move
- queued for being checked or transferred.
- This can be set arbitrarily large. It will only use memory when the
- queue is in use. Note that it will use in the order of N kB of memory
- when the backlog is in use.
- Setting this large allows rclone to calculate how many files are pending
- more accurately, give a more accurate estimated finish time and make
- --order-by work more accurately.
- Setting this small will make rclone more synchronous to the listings of
- the remote which may be desirable.
- –max-delete=N
- This tells rclone not to delete more than N files. If that limit is
- exceeded then a fatal error will be generated and rclone will stop the
- operation in progress.
- –max-depth=N
- This modifies the recursion depth for all the commands except purge.
- So if you do rclone --max-depth 1 ls remote:path you will see only the
- files in the top level directory. Using --max-depth 2 means you will see
- all the files in first two directory levels and so on.
- For historical reasons the lsd command defaults to using a --max-depth
- of 1 - you can override this with the command line flag.
- You can use this command to disable recursion (with --max-depth 1).
- Note that if you use this with sync and --delete-excluded the files not
- recursed through are considered excluded and will be deleted on the
- destination. Test first with --dry-run if you are not sure what will
- happen.
- –max-duration=TIME
- Rclone will stop scheduling new transfers when it has run for the
- duration specified.
- Defaults to off.
- When the limit is reached any existing transfers will complete.
- Rclone won’t exit with an error if the transfer limit is reached.
- –max-transfer=SIZE
- Rclone will stop transferring when it has reached the size specified.
- Defaults to off.
- When the limit is reached all transfers will stop immediately.
- Rclone will exit with exit code 8 if the transfer limit is reached.
- –modify-window=TIME
- When checking whether a file has been modified, this is the maximum
- allowed time difference that a file can have and still be considered
- equivalent.
- The default is 1ns unless this is overridden by a remote. For example OS
- X only stores modification times to the nearest second so if you are
- reading and writing to an OS X filing system this will be 1s by default.
- This command line flag allows you to override that computed default.
- –multi-thread-cutoff=SIZE
- When downloading files to the local backend above this size, rclone will
- use multiple threads to download the file. (default 250M)
- Rclone preallocates the file (using fallocate(FALLOC_FL_KEEP_SIZE) on
- unix or NTSetInformationFile on Windows both of which takes no time)
- then each thread writes directly into the file at the correct place.
- This means that rclone won’t create fragmented or sparse files and there
- won’t be any assembly time at the end of the transfer.
- The number of threads used to dowload is controlled by
- --multi-thread-streams.
- Use -vv if you wish to see info about the threads.
- This will work with the sync/copy/move commands and friends
- copyto/moveto. Multi thread downloads will be used with rclone mount and
- rclone serve if --vfs-cache-mode is set to writes or above.
- NB that this ONLY works for a local destination but will work with any
- source.
- NB that multi thread copies are disabled for local to local copies as
- they are faster without unless --multi-thread-streams is set explicitly.
- –multi-thread-streams=N
- When using multi thread downloads (see above --multi-thread-cutoff) this
- sets the maximum number of streams to use. Set to 0 to disable multi
- thread downloads. (Default 4)
- Exactly how many streams rclone uses for the download depends on the
- size of the file. To calculate the number of download streams Rclone
- divides the size of the file by the --multi-thread-cutoff and rounds up,
- up to the maximum set with --multi-thread-streams.
- So if --multi-thread-cutoff 250MB and --multi-thread-streams 4 are in
- effect (the defaults):
- - 0MB.250MB files will be downloaded with 1 stream
- - 250MB..500MB files will be downloaded with 2 streams
- - 500MB..750MB files will be downloaded with 3 streams
- - 750MB+ files will be downloaded with 4 streams
- –no-check-dest
- The --no-check-dest can be used with move or copy and it causes rclone
- not to check the destination at all when copying files.
- This means that:
- - the destination is not listed minimising the API calls
- - files are always transferred
- - this can cause duplicates on remotes which allow it (eg Google
- Drive)
- - --retries 1 is recommended otherwise you’ll transfer everything
- again on a retry
- This flag is useful to minimise the transactions if you know that none
- of the files are on the destination.
- This is a specialized flag which should be ignored by most users!
- –no-gzip-encoding
- Don’t set Accept-Encoding: gzip. This means that rclone won’t ask the
- server for compressed files automatically. Useful if you’ve set the
- server to return files with Content-Encoding: gzip but you uploaded
- compressed files.
- There is no need to set this in normal operation, and doing so will
- decrease the network transfer efficiency of rclone.
- –no-traverse
- The --no-traverse flag controls whether the destination file system is
- traversed when using the copy or move commands. --no-traverse is not
- compatible with sync and will be ignored if you supply it with sync.
- If you are only copying a small number of files (or are filtering most
- of the files) and/or have a large number of files on the destination
- then --no-traverse will stop rclone listing the destination and save
- time.
- However, if you are copying a large number of files, especially if you
- are doing a copy where lots of the files under consideration haven’t
- changed and won’t need copying then you shouldn’t use --no-traverse.
- See rclone copy for an example of how to use it.
- –no-update-modtime
- When using this flag, rclone won’t update modification times of remote
- files if they are incorrect as it would normally.
- This can be used if the remote is being synced with another tool also
- (eg the Google Drive client).
- –order-by string
- The --order-by flag controls the order in which files in the backlog are
- processed in rclone sync, rclone copy and rclone move.
- The order by string is constructed like this. The first part describes
- what aspect is being measured:
- - size - order by the size of the files
- - name - order by the full path of the files
- - modtime - order by the modification date of the files
- This can have a modifier appended with a comma:
- - ascending or asc - order so that the smallest (or oldest) is
- processed first
- - descending or desc - order so that the largest (or newest) is
- processed first
- If no modifier is supplied then the order is ascending.
- For example
- - --order-by size,desc - send the largest files first
- - --order-by modtime,ascending - send the oldest files first
- - --order-by name - send the files with alphabetically by path first
- If the --order-by flag is not supplied or it is supplied with an empty
- string then the default ordering will be used which is as scanned. With
- --checkers 1 this is mostly alphabetical, however with the default
- --checkers 8 it is somewhat random.
- Limitations
- The --order-by flag does not do a separate pass over the data. This
- means that it may transfer some files out of the order specified if
- - there are no files in the backlog or the source has not been fully
- scanned yet
- - there are more than –max-backlog files in the backlog
- Rclone will do its best to transfer the best file it has so in practice
- this should not cause a problem. Think of --order-by as being more of a
- best efforts flag rather than a perfect ordering.
- –password-command SpaceSepList
- This flag supplies a program which should supply the config password
- when run. This is an alternative to rclone prompting for the password or
- setting the RCLONE_CONFIG_PASS variable.
- The argument to this should be a command with a space separated list of
- arguments. If one of the arguments has a space in then enclose it in ",
- if you want a literal " in an argument then enclose the argument in "
- and double the ". See CSV encoding for more info.
- Eg
- --password-command echo hello
- --password-command echo "hello with space"
- --password-command echo "hello with ""quotes"" and space"
- See the Configuration Encryption for more info.
- -P, –progress
- This flag makes rclone update the stats in a static block in the
- terminal providing a realtime overview of the transfer.
- Any log messages will scroll above the static block. Log messages will
- push the static block down to the bottom of the terminal where it will
- stay.
- Normally this is updated every 500mS but this period can be overridden
- with the --stats flag.
- This can be used with the --stats-one-line flag for a simpler display.
- Note: On Windows until this bug is fixed all non-ASCII characters will
- be replaced with . when --progress is in use.
- -q, –quiet
- Normally rclone outputs stats and a completion message. If you set this
- flag it will make as little output as possible.
- –retries int
- Retry the entire sync if it fails this many times it fails (default 3).
- Some remotes can be unreliable and a few retries help pick up the files
- which didn’t get transferred because of errors.
- Disable retries with --retries 1.
- –retries-sleep=TIME
- This sets the interval between each retry specified by --retries
- The default is 0. Use 0 to disable.
- –size-only
- Normally rclone will look at modification time and size of files to see
- if they are equal. If you set this flag then rclone will check only the
- size.
- This can be useful transferring files from Dropbox which have been
- modified by the desktop sync client which doesn’t set checksums of
- modification times in the same way as rclone.
- –stats=TIME
- Commands which transfer data (sync, copy, copyto, move, moveto) will
- print data transfer stats at regular intervals to show their progress.
- This sets the interval.
- The default is 1m. Use 0 to disable.
- If you set the stats interval then all commands can show stats. This can
- be useful when running other commands, check or mount for example.
- Stats are logged at INFO level by default which means they won’t show at
- default log level NOTICE. Use --stats-log-level NOTICE or -v to make
- them show. See the Logging section for more info on log levels.
- Note that on macOS you can send a SIGINFO (which is normally ctrl-T in
- the terminal) to make the stats print immediately.
- –stats-file-name-length integer
- By default, the --stats output will truncate file names and paths longer
- than 40 characters. This is equivalent to providing
- --stats-file-name-length 40. Use --stats-file-name-length 0 to disable
- any truncation of file names printed by stats.
- –stats-log-level string
- Log level to show --stats output at. This can be DEBUG, INFO, NOTICE, or
- ERROR. The default is INFO. This means at the default level of logging
- which is NOTICE the stats won’t show - if you want them to then use
- --stats-log-level NOTICE. See the Logging section for more info on log
- levels.
- –stats-one-line
- When this is specified, rclone condenses the stats into a single line
- showing the most important stats only.
- –stats-one-line-date
- When this is specified, rclone enables the single-line stats and
- prepends the display with a date string. The default is
- 2006/01/02 15:04:05 -
- –stats-one-line-date-format
- When this is specified, rclone enables the single-line stats and
- prepends the display with a user-supplied date string. The date string
- MUST be enclosed in quotes. Follow golang specs for date formatting
- syntax.
- –stats-unit=bits|bytes
- By default, data transfer rates will be printed in bytes/second.
- This option allows the data rate to be printed in bits/second.
- Data transfer volume will still be reported in bytes.
- The rate is reported as a binary unit, not SI unit. So 1 Mbit/s equals
- 1,048,576 bits/s and not 1,000,000 bits/s.
- The default is bytes.
- –suffix=SUFFIX
- When using sync, copy or move any files which would have been
- overwritten or deleted will have the suffix added to them. If there is a
- file with the same path (after the suffix has been added), then it will
- be overwritten.
- The remote in use must support server side move or copy and you must use
- the same remote as the destination of the sync.
- This is for use with files to add the suffix in the current directory or
- with --backup-dir. See --backup-dir for more info.
- For example
- rclone sync /path/to/local/file remote:current --suffix .bak
- will sync /path/to/local to remote:current, but for any files which
- would have been updated or deleted have .bak added.
- –suffix-keep-extension
- When using --suffix, setting this causes rclone put the SUFFIX before
- the extension of the files that it backs up rather than after.
- So let’s say we had --suffix -2019-01-01, without the flag file.txt
- would be backed up to file.txt-2019-01-01 and with the flag it would be
- backed up to file-2019-01-01.txt. This can be helpful to make sure the
- suffixed files can still be opened.
- –syslog
- On capable OSes (not Windows or Plan9) send all log output to syslog.
- This can be useful for running rclone in a script or rclone mount.
- –syslog-facility string
- If using --syslog this sets the syslog facility (eg KERN, USER). See
- man syslog for a list of possible facilities. The default facility is
- DAEMON.
- –tpslimit float
- Limit HTTP transactions per second to this. Default is 0 which is used
- to mean unlimited transactions per second.
- For example to limit rclone to 10 HTTP transactions per second use
- --tpslimit 10, or to 1 transaction every 2 seconds use --tpslimit 0.5.
- Use this when the number of transactions per second from rclone is
- causing a problem with the cloud storage provider (eg getting you banned
- or rate limited).
- This can be very useful for rclone mount to control the behaviour of
- applications using it.
- See also --tpslimit-burst.
- –tpslimit-burst int
- Max burst of transactions for --tpslimit. (default 1)
- Normally --tpslimit will do exactly the number of transaction per second
- specified. However if you supply --tps-burst then rclone can save up
- some transactions from when it was idle giving a burst of up to the
- parameter supplied.
- For example if you provide --tpslimit-burst 10 then if rclone has been
- idle for more than 10*--tpslimit then it can do 10 transactions very
- quickly before they are limited again.
- This may be used to increase performance of --tpslimit without changing
- the long term average number of transactions per second.
- –track-renames
- By default, rclone doesn’t keep track of renamed files, so if you rename
- a file locally then sync it to a remote, rclone will delete the old file
- on the remote and upload a new copy.
- If you use this flag, and the remote supports server side copy or server
- side move, and the source and destination have a compatible hash, then
- this will track renames during sync operations and perform renaming
- server-side.
- Files will be matched by size and hash - if both match then a rename
- will be considered.
- If the destination does not support server-side copy or move, rclone
- will fall back to the default behaviour and log an error level message
- to the console. Note: Encrypted destinations are not supported by
- --track-renames.
- Note that --track-renames is incompatible with --no-traverse and that it
- uses extra memory to keep track of all the rename candidates.
- Note also that --track-renames is incompatible with --delete-before and
- will select --delete-after instead of --delete-during.
- –delete-(before,during,after)
- This option allows you to specify when files on your destination are
- deleted when you sync folders.
- Specifying the value --delete-before will delete all files present on
- the destination, but not on the source _before_ starting the transfer of
- any new or updated files. This uses two passes through the file systems,
- one for the deletions and one for the copies.
- Specifying --delete-during will delete files while checking and
- uploading files. This is the fastest option and uses the least memory.
- Specifying --delete-after (the default value) will delay deletion of
- files until all new/updated files have been successfully transferred.
- The files to be deleted are collected in the copy pass then deleted
- after the copy pass has completed successfully. The files to be deleted
- are held in memory so this mode may use more memory. This is the safest
- mode as it will only delete files if there have been no errors
- subsequent to that. If there have been errors before the deletions start
- then you will get the message
- not deleting files as there were IO errors.
- –fast-list
- When doing anything which involves a directory listing (eg sync, copy,
- ls - in fact nearly every command), rclone normally lists a directory
- and processes it before using more directory lists to process any
- subdirectories. This can be parallelised and works very quickly using
- the least amount of memory.
- However, some remotes have a way of listing all files beneath a
- directory in one (or a small number) of transactions. These tend to be
- the bucket based remotes (eg S3, B2, GCS, Swift, Hubic).
- If you use the --fast-list flag then rclone will use this method for
- listing directories. This will have the following consequences for the
- listing:
- - It WILL use fewer transactions (important if you pay for them)
- - It WILL use more memory. Rclone has to load the whole listing into
- memory.
- - It _may_ be faster because it uses fewer transactions
- - It _may_ be slower because it can’t be parallelized
- rclone should always give identical results with and without
- --fast-list.
- If you pay for transactions and can fit your entire sync listing into
- memory then --fast-list is recommended. If you have a very big sync to
- do then don’t use --fast-list otherwise you will run out of memory.
- If you use --fast-list on a remote which doesn’t support it, then rclone
- will just ignore it.
- –timeout=TIME
- This sets the IO idle timeout. If a transfer has started but then
- becomes idle for this long it is considered broken and disconnected.
- The default is 5m. Set to 0 to disable.
- –transfers=N
- The number of file transfers to run in parallel. It can sometimes be
- useful to set this to a smaller number if the remote is giving a lot of
- timeouts or bigger if you have lots of bandwidth and a fast remote.
- The default is to run 4 file transfers in parallel.
- -u, –update
- This forces rclone to skip any files which exist on the destination and
- have a modified time that is newer than the source file.
- This can be useful when transferring to a remote which doesn’t support
- mod times directly (or when using --use-server-modtime to avoid extra
- API calls) as it is more accurate than a --size-only check and faster
- than using --checksum.
- If an existing destination file has a modification time equal (within
- the computed modify window precision) to the source file’s, it will be
- updated if the sizes are different. If --checksum is set then rclone
- will update the destination if the checksums differ too.
- If an existing destination file is older than the source file then it
- will be updated if the size or checksum differs from the source file.
- On remotes which don’t support mod time directly (or when using
- --use-server-modtime) the time checked will be the uploaded time. This
- means that if uploading to one of these remotes, rclone will skip any
- files which exist on the destination and have an uploaded time that is
- newer than the modification time of the source file.
- –use-mmap
- If this flag is set then rclone will use anonymous memory allocated by
- mmap on Unix based platforms and VirtualAlloc on Windows for its
- transfer buffers (size controlled by --buffer-size). Memory allocated
- like this does not go on the Go heap and can be returned to the OS
- immediately when it is finished with.
- If this flag is not set then rclone will allocate and free the buffers
- using the Go memory allocator which may use more memory as memory pages
- are returned less aggressively to the OS.
- It is possible this does not work well on all platforms so it is
- disabled by default; in the future it may be enabled by default.
- –use-server-modtime
- Some object-store backends (e.g, Swift, S3) do not preserve file
- modification times (modtime). On these backends, rclone stores the
- original modtime as additional metadata on the object. By default it
- will make an API call to retrieve the metadata when the modtime is
- needed by an operation.
- Use this flag to disable the extra API call and rely instead on the
- server’s modified time. In cases such as a local to remote sync using
- --update, knowing the local file is newer than the time it was last
- uploaded to the remote is sufficient. In those cases, this flag can
- speed up the process and reduce the number of API calls necessary.
- Using this flag on a sync operation without also using --update would
- cause all files modified at any time other than the last upload time to
- be uploaded again, which is probably not what you want.
- -v, -vv, –verbose
- With -v rclone will tell you about each file that is transferred and a
- small number of significant events.
- With -vv rclone will become very verbose telling you about every file it
- considers and transfers. Please send bug reports with a log with this
- setting.
- -V, –version
- Prints the version number
- SSL/TLS options
- The outoing SSL/TLS connections rclone makes can be controlled with
- these options. For example this can be very useful with the HTTP or
- WebDAV backends. Rclone HTTP servers have their own set of configuration
- for SSL/TLS which you can find in their documentation.
- –ca-cert string
- This loads the PEM encoded certificate authority certificate and uses it
- to verify the certificates of the servers rclone connects to.
- If you have generated certificates signed with a local CA then you will
- need this flag to connect to servers using those certificates.
- –client-cert string
- This loads the PEM encoded client side certificate.
- This is used for mutual TLS authentication.
- The --client-key flag is required too when using this.
- –client-key string
- This loads the PEM encoded client side private key used for mutual TLS
- authentication. Used in conjunction with --client-cert.
- –no-check-certificate=true/false
- --no-check-certificate controls whether a client verifies the server’s
- certificate chain and host name. If --no-check-certificate is true, TLS
- accepts any certificate presented by the server and any host name in
- that certificate. In this mode, TLS is susceptible to man-in-the-middle
- attacks.
- This option defaults to false.
- THIS SHOULD BE USED ONLY FOR TESTING.
- Configuration Encryption
- Your configuration file contains information for logging in to your
- cloud services. This means that you should keep your .rclone.conf file
- in a secure location.
- If you are in an environment where that isn’t possible, you can add a
- password to your configuration. This means that you will have to supply
- the password every time you start rclone.
- To add a password to your rclone configuration, execute rclone config.
- >rclone config
- Current remotes:
- e) Edit existing remote
- n) New remote
- d) Delete remote
- s) Set configuration password
- q) Quit config
- e/n/d/s/q>
- Go into s, Set configuration password:
- e/n/d/s/q> s
- Your configuration is not encrypted.
- If you add a password, you will protect your login information to cloud services.
- a) Add Password
- q) Quit to main menu
- a/q> a
- Enter NEW configuration password:
- password:
- Confirm NEW password:
- password:
- Password set
- Your configuration is encrypted.
- c) Change Password
- u) Unencrypt configuration
- q) Quit to main menu
- c/u/q>
- Your configuration is now encrypted, and every time you start rclone you
- will have to supply the password. See below for details. In the same
- menu, you can change the password or completely remove encryption from
- your configuration.
- There is no way to recover the configuration if you lose your password.
- rclone uses nacl secretbox which in turn uses XSalsa20 and Poly1305 to
- encrypt and authenticate your configuration with secret-key
- cryptography. The password is SHA-256 hashed, which produces the key for
- secretbox. The hashed password is not stored.
- While this provides very good security, we do not recommend storing your
- encrypted rclone configuration in public if it contains sensitive
- information, maybe except if you use a very strong password.
- If it is safe in your environment, you can set the RCLONE_CONFIG_PASS
- environment variable to contain your password, in which case it will be
- used for decrypting the configuration.
- You can set this for a session from a script. For unix like systems save
- this to a file called set-rclone-password:
- #!/bin/echo Source this file don't run it
- read -s RCLONE_CONFIG_PASS
- export RCLONE_CONFIG_PASS
- Then source the file when you want to use it. From the shell you would
- do source set-rclone-password. It will then ask you for the password and
- set it in the environment variable.
- An alternate means of supplying the password is to provide a script
- which will retrieve the password and print on standard output. This
- script should have a fully specified path name and not rely on any
- environment variables. The script is supplied either via
- --password-command="..." command line argument or via the
- RCLONE_PASSWORD_COMMAND environment variable.
- One useful example of this is using the passwordstore application to
- retrieve the password:
- export RCLONE_PASSWORD_COMMAND="pass rclone/config"
- If the passwordstore password manager holds the password for the rclone
- configuration, using the script method means the password is primarily
- protected by the passwordstore system, and is never embedded in the
- clear in scripts, nor available for examination using the standard
- commands available. It is quite possible with long running rclone
- sessions for copies of passwords to be innocently captured in log files
- or terminal scroll buffers, etc. Using the script method of supplying
- the password enhances the security of the config password considerably.
- If you are running rclone inside a script, unless you are using the
- --password-command method, you might want to disable password prompts.
- To do that, pass the parameter --ask-password=false to rclone. This will
- make rclone fail instead of asking for a password if RCLONE_CONFIG_PASS
- doesn’t contain a valid password, and --password-command has not been
- supplied.
- Developer options
- These options are useful when developing or debugging rclone. There are
- also some more remote specific options which aren’t documented here
- which are used for testing. These start with remote name eg
- --drive-test-option - see the docs for the remote in question.
- –cpuprofile=FILE
- Write CPU profile to file. This can be analysed with go tool pprof.
- –dump flag,flag,flag
- The --dump flag takes a comma separated list of flags to dump info
- about.
- Note that some headers including Accept-Encoding as shown may not be
- correct in the request and the response may not show Content-Encoding if
- the go standard libraries auto gzip encoding was in effect. In this case
- the body of the request will be gunzipped before showing it.
- The available flags are:
- –dump headers
- Dump HTTP headers with Authorization: lines removed. May still contain
- sensitive info. Can be very verbose. Useful for debugging only.
- Use --dump auth if you do want the Authorization: headers.
- –dump bodies
- Dump HTTP headers and bodies - may contain sensitive info. Can be very
- verbose. Useful for debugging only.
- Note that the bodies are buffered in memory so don’t use this for
- enormous files.
- –dump requests
- Like --dump bodies but dumps the request bodies and the response
- headers. Useful for debugging download problems.
- –dump responses
- Like --dump bodies but dumps the response bodies and the request
- headers. Useful for debugging upload problems.
- –dump auth
- Dump HTTP headers - will contain sensitive info such as Authorization:
- headers - use --dump headers to dump without Authorization: headers. Can
- be very verbose. Useful for debugging only.
- –dump filters
- Dump the filters to the output. Useful to see exactly what include and
- exclude options are filtering on.
- –dump goroutines
- This dumps a list of the running go-routines at the end of the command
- to standard output.
- –dump openfiles
- This dumps a list of the open files at the end of the command. It uses
- the lsof command to do that so you’ll need that installed to use it.
- –memprofile=FILE
- Write memory profile to file. This can be analysed with go tool pprof.
- Filtering
- For the filtering options
- - --delete-excluded
- - --filter
- - --filter-from
- - --exclude
- - --exclude-from
- - --include
- - --include-from
- - --files-from
- - --min-size
- - --max-size
- - --min-age
- - --max-age
- - --dump filters
- See the filtering section.
- Remote control
- For the remote control options and for instructions on how to remote
- control rclone
- - --rc
- - and anything starting with --rc-
- See the remote control section.
- Logging
- rclone has 4 levels of logging, ERROR, NOTICE, INFO and DEBUG.
- By default, rclone logs to standard error. This means you can redirect
- standard error and still see the normal output of rclone commands (eg
- rclone ls).
- By default, rclone will produce Error and Notice level messages.
- If you use the -q flag, rclone will only produce Error messages.
- If you use the -v flag, rclone will produce Error, Notice and Info
- messages.
- If you use the -vv flag, rclone will produce Error, Notice, Info and
- Debug messages.
- You can also control the log levels with the --log-level flag.
- If you use the --log-file=FILE option, rclone will redirect Error, Info
- and Debug messages along with standard error to FILE.
- If you use the --syslog flag then rclone will log to syslog and the
- --syslog-facility control which facility it uses.
- Rclone prefixes all log messages with their level in capitals, eg INFO
- which makes it easy to grep the log file for different kinds of
- information.
- Exit Code
- If any errors occur during the command execution, rclone will exit with
- a non-zero exit code. This allows scripts to detect when rclone
- operations have failed.
- During the startup phase, rclone will exit immediately if an error is
- detected in the configuration. There will always be a log message
- immediately before exiting.
- When rclone is running it will accumulate errors as it goes along, and
- only exit with a non-zero exit code if (after retries) there were still
- failed transfers. For every error counted there will be a high priority
- log message (visible with -q) showing the message and which file caused
- the problem. A high priority message is also shown when starting a retry
- so the user can see that any previous error messages may not be valid
- after the retry. If rclone has done a retry it will log a high priority
- message if the retry was successful.
- List of exit codes
- - 0 - success
- - 1 - Syntax or usage error
- - 2 - Error not otherwise categorised
- - 3 - Directory not found
- - 4 - File not found
- - 5 - Temporary error (one that more retries might fix) (Retry errors)
- - 6 - Less serious errors (like 461 errors from dropbox) (NoRetry
- errors)
- - 7 - Fatal error (one that more retries won’t fix, like account
- suspended) (Fatal errors)
- - 8 - Transfer exceeded - limit set by –max-transfer reached
- Environment Variables
- Rclone can be configured entirely using environment variables. These can
- be used to set defaults for options or config file entries.
- Options
- Every option in rclone can have its default set by environment variable.
- To find the name of the environment variable, first, take the long
- option name, strip the leading --, change - to _, make upper case and
- prepend RCLONE_.
- For example, to always set --stats 5s, set the environment variable
- RCLONE_STATS=5s. If you set stats on the command line this will override
- the environment variable setting.
- Or to always use the trash in drive --drive-use-trash, set
- RCLONE_DRIVE_USE_TRASH=true.
- The same parser is used for the options and the environment variables so
- they take exactly the same form.
- Config file
- You can set defaults for values in the config file on an individual
- remote basis. If you want to use this feature, you will need to discover
- the name of the config items that you want. The easiest way is to run
- through rclone config by hand, then look in the config file to see what
- the values are (the config file can be found by looking at the help for
- --config in rclone help).
- To find the name of the environment variable, you need to set, take
- RCLONE_CONFIG_ + name of remote + _ + name of config file option and
- make it all uppercase.
- For example, to configure an S3 remote named mys3: without a config file
- (using unix ways of setting environment variables):
- $ export RCLONE_CONFIG_MYS3_TYPE=s3
- $ export RCLONE_CONFIG_MYS3_ACCESS_KEY_ID=XXX
- $ export RCLONE_CONFIG_MYS3_SECRET_ACCESS_KEY=XXX
- $ rclone lsd MYS3:
- -1 2016-09-21 12:54:21 -1 my-bucket
- $ rclone listremotes | grep mys3
- mys3:
- Note that if you want to create a remote using environment variables you
- must create the ..._TYPE variable as above.
- Other environment variables
- - RCLONE_CONFIG_PASS` set to contain your config file password (see
- Configuration Encryption section)
- - HTTP_PROXY, HTTPS_PROXY and NO_PROXY (or the lowercase versions
- thereof).
- - HTTPS_PROXY takes precedence over HTTP_PROXY for https requests.
- - The environment values may be either a complete URL or a
- “host[:port]” for, in which case the “http” scheme is assumed.
- CONFIGURING RCLONE ON A REMOTE / HEADLESS MACHINE
- Some of the configurations (those involving oauth2) require an Internet
- connected web browser.
- If you are trying to set rclone up on a remote or headless box with no
- browser available on it (eg a NAS or a server in a datacenter) then you
- will need to use an alternative means of configuration. There are two
- ways of doing it, described below.
- Configuring using rclone authorize
- On the headless box
- ...
- Remote config
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine
- y) Yes
- n) No
- y/n> n
- For this to work, you will need rclone available on a machine that has a web browser available.
- Execute the following on your machine:
- rclone authorize "amazon cloud drive"
- Then paste the result below:
- result>
- Then on your main desktop machine
- rclone authorize "amazon cloud drive"
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- Paste the following into your remote machine --->
- SECRET_TOKEN
- <---End paste
- Then back to the headless box, paste in the code
- result> SECRET_TOKEN
- --------------------
- [acd12]
- client_id =
- client_secret =
- token = SECRET_TOKEN
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d>
- Configuring by copying the config file
- Rclone stores all of its config in a single configuration file. This can
- easily be copied to configure a remote rclone.
- So first configure rclone on your desktop machine
- rclone config
- to set up the config file.
- Find the config file by running rclone config file, for example
- $ rclone config file
- Configuration file is stored at:
- /home/user/.rclone.conf
- Now transfer it to the remote box (scp, cut paste, ftp, sftp etc) and
- place it in the correct place (use rclone config file on the remote box
- to find out where).
- FILTERING, INCLUDES AND EXCLUDES
- Rclone has a sophisticated set of include and exclude rules. Some of
- these are based on patterns and some on other things like file size.
- The filters are applied for the copy, sync, move, ls, lsl, md5sum,
- sha1sum, size, delete and check operations. Note that purge does not
- obey the filters.
- Each path as it passes through rclone is matched against the include and
- exclude rules like --include, --exclude, --include-from, --exclude-from,
- --filter, or --filter-from. The simplest way to try them out is using
- the ls command, or --dry-run together with -v.
- Patterns
- The patterns used to match files for inclusion or exclusion are based on
- “file globs” as used by the unix shell.
- If the pattern starts with a / then it only matches at the top level of
- the directory tree, RELATIVE TO THE ROOT OF THE REMOTE (not necessarily
- the root of the local drive). If it doesn’t start with / then it is
- matched starting at the END OF THE PATH, but it will only match a
- complete path element:
- file.jpg - matches "file.jpg"
- - matches "directory/file.jpg"
- - doesn't match "afile.jpg"
- - doesn't match "directory/afile.jpg"
- /file.jpg - matches "file.jpg" in the root directory of the remote
- - doesn't match "afile.jpg"
- - doesn't match "directory/file.jpg"
- IMPORTANT Note that you must use / in patterns and not \ even if running
- on Windows.
- A * matches anything but not a /.
- *.jpg - matches "file.jpg"
- - matches "directory/file.jpg"
- - doesn't match "file.jpg/something"
- Use ** to match anything, including slashes (/).
- dir/** - matches "dir/file.jpg"
- - matches "dir/dir1/dir2/file.jpg"
- - doesn't match "directory/file.jpg"
- - doesn't match "adir/file.jpg"
- A ? matches any character except a slash /.
- l?ss - matches "less"
- - matches "lass"
- - doesn't match "floss"
- A [ and ] together make a character class, such as [a-z] or [aeiou] or
- [[:alpha:]]. See the go regexp docs for more info on these.
- h[ae]llo - matches "hello"
- - matches "hallo"
- - doesn't match "hullo"
- A { and } define a choice between elements. It should contain a comma
- separated list of patterns, any of which might match. These patterns can
- contain wildcards.
- {one,two}_potato - matches "one_potato"
- - matches "two_potato"
- - doesn't match "three_potato"
- - doesn't match "_potato"
- Special characters can be escaped with a \ before them.
- \*.jpg - matches "*.jpg"
- \\.jpg - matches "\.jpg"
- \[one\].jpg - matches "[one].jpg"
- Patterns are case sensitive unless the --ignore-case flag is used.
- Without --ignore-case (default)
- potato - matches "potato"
- - doesn't match "POTATO"
- With --ignore-case
- potato - matches "potato"
- - matches "POTATO"
- Note also that rclone filter globs can only be used in one of the filter
- command line flags, not in the specification of the remote, so
- rclone copy "remote:dir*.jpg" /path/to/dir won’t work - what is required
- is rclone --include "*.jpg" copy remote:dir /path/to/dir
- Directories
- Rclone keeps track of directories that could match any file patterns.
- Eg if you add the include rule
- /a/*.jpg
- Rclone will synthesize the directory include rule
- /a/
- If you put any rules which end in / then it will only match directories.
- Directory matches are ONLY used to optimise directory access patterns -
- you must still match the files that you want to match. Directory matches
- won’t optimise anything on bucket based remotes (eg s3, swift, google
- compute storage, b2) which don’t have a concept of directory.
- Differences between rsync and rclone patterns
- Rclone implements bash style {a,b,c} glob matching which rsync doesn’t.
- Rclone always does a wildcard match so \ must always escape a \.
- How the rules are used
- Rclone maintains a combined list of include rules and exclude rules.
- Each file is matched in order, starting from the top, against the rule
- in the list until it finds a match. The file is then included or
- excluded according to the rule type.
- If the matcher fails to find a match after testing against all the
- entries in the list then the path is included.
- For example given the following rules, + being include, - being exclude,
- - secret*.jpg
- + *.jpg
- + *.png
- + file2.avi
- - *
- This would include
- - file1.jpg
- - file3.png
- - file2.avi
- This would exclude
- - secret17.jpg
- - non *.jpg and *.png
- A similar process is done on directory entries before recursing into
- them. This only works on remotes which have a concept of directory (Eg
- local, google drive, onedrive, amazon drive) and not on bucket based
- remotes (eg s3, swift, google compute storage, b2).
- Adding filtering rules
- Filtering rules are added with the following command line flags.
- Repeating options
- You can repeat the following options to add more than one rule of that
- type.
- - --include
- - --include-from
- - --exclude
- - --exclude-from
- - --filter
- - --filter-from
- IMPORTANT You should not use --include* together with --exclude*. It may
- produce different results than you expected. In that case try to use:
- --filter*.
- Note that all the options of the same type are processed together in the
- order above, regardless of what order they were placed on the command
- line.
- So all --include options are processed first in the order they appeared
- on the command line, then all --include-from options etc.
- To mix up the order includes and excludes, the --filter flag can be
- used.
- --exclude - Exclude files matching pattern
- Add a single exclude rule with --exclude.
- This flag can be repeated. See above for the order the flags are
- processed in.
- Eg --exclude *.bak to exclude all bak files from the sync.
- --exclude-from - Read exclude patterns from file
- Add exclude rules from a file.
- This flag can be repeated. See above for the order the flags are
- processed in.
- Prepare a file like this exclude-file.txt
- # a sample exclude rule file
- *.bak
- file2.jpg
- Then use as --exclude-from exclude-file.txt. This will sync all files
- except those ending in bak and file2.jpg.
- This is useful if you have a lot of rules.
- --include - Include files matching pattern
- Add a single include rule with --include.
- This flag can be repeated. See above for the order the flags are
- processed in.
- Eg --include *.{png,jpg} to include all png and jpg files in the backup
- and no others.
- This adds an implicit --exclude * at the very end of the filter list.
- This means you can mix --include and --include-from with the other
- filters (eg --exclude) but you must include all the files you want in
- the include statement. If this doesn’t provide enough flexibility then
- you must use --filter-from.
- --include-from - Read include patterns from file
- Add include rules from a file.
- This flag can be repeated. See above for the order the flags are
- processed in.
- Prepare a file like this include-file.txt
- # a sample include rule file
- *.jpg
- *.png
- file2.avi
- Then use as --include-from include-file.txt. This will sync all jpg, png
- files and file2.avi.
- This is useful if you have a lot of rules.
- This adds an implicit --exclude * at the very end of the filter list.
- This means you can mix --include and --include-from with the other
- filters (eg --exclude) but you must include all the files you want in
- the include statement. If this doesn’t provide enough flexibility then
- you must use --filter-from.
- --filter - Add a file-filtering rule
- This can be used to add a single include or exclude rule. Include rules
- start with + and exclude rules start with -. A special rule called ! can
- be used to clear the existing rules.
- This flag can be repeated. See above for the order the flags are
- processed in.
- Eg --filter "- *.bak" to exclude all bak files from the sync.
- --filter-from - Read filtering patterns from a file
- Add include/exclude rules from a file.
- This flag can be repeated. See above for the order the flags are
- processed in.
- Prepare a file like this filter-file.txt
- # a sample filter rule file
- - secret*.jpg
- + *.jpg
- + *.png
- + file2.avi
- - /dir/Trash/**
- + /dir/**
- # exclude everything else
- - *
- Then use as --filter-from filter-file.txt. The rules are processed in
- the order that they are defined.
- This example will include all jpg and png files, exclude any files
- matching secret*.jpg and include file2.avi. It will also include
- everything in the directory dir at the root of the sync, except
- dir/Trash which it will exclude. Everything else will be excluded from
- the sync.
- --files-from - Read list of source-file names
- This reads a list of file names from the file passed in and ONLY these
- files are transferred. The FILTERING RULES ARE IGNORED completely if you
- use this option.
- --files-from expects a list of files as it’s input. rclone lsf has a
- compatible format that can be used to export file lists from remotes.
- Rclone will traverse the file system if you use --files-from,
- effectively using the files in --files-from as a set of filters. Rclone
- will not error if any of the files are missing.
- If you use --no-traverse as well as --files-from then rclone will not
- traverse the destination file system, it will find each file
- individually using approximately 1 API call. This can be more efficient
- for small lists of files.
- This option can be repeated to read from more than one file. These are
- read in the order that they are placed on the command line.
- Paths within the --files-from file will be interpreted as starting with
- the root specified in the command. Leading / characters are ignored.
- For example, suppose you had files-from.txt with this content:
- # comment
- file1.jpg
- subdir/file2.jpg
- You could then use it like this:
- rclone copy --files-from files-from.txt /home/me/pics remote:pics
- This will transfer these files only (if they exist)
- /home/me/pics/file1.jpg → remote:pics/file1.jpg
- /home/me/pics/subdir/file2.jpg → remote:pics/subdir/file2.jpg
- To take a more complicated example, let’s say you had a few files you
- want to back up regularly with these absolute paths:
- /home/user1/important
- /home/user1/dir/file
- /home/user2/stuff
- To copy these you’d find a common subdirectory - in this case /home and
- put the remaining files in files-from.txt with or without leading /, eg
- user1/important
- user1/dir/file
- user2/stuff
- You could then copy these to a remote like this
- rclone copy --files-from files-from.txt /home remote:backup
- The 3 files will arrive in remote:backup with the paths as in the
- files-from.txt like this:
- /home/user1/important → remote:backup/user1/important
- /home/user1/dir/file → remote:backup/user1/dir/file
- /home/user2/stuff → remote:backup/user2/stuff
- You could of course choose / as the root too in which case your
- files-from.txt might look like this.
- /home/user1/important
- /home/user1/dir/file
- /home/user2/stuff
- And you would transfer it like this
- rclone copy --files-from files-from.txt / remote:backup
- In this case there will be an extra home directory on the remote:
- /home/user1/important → remote:backup/home/user1/important
- /home/user1/dir/file → remote:backup/home/user1/dir/file
- /home/user2/stuff → remote:backup/home/user2/stuff
- --min-size - Don’t transfer any file smaller than this
- This option controls the minimum size file which will be transferred.
- This defaults to kBytes but a suffix of k, M, or G can be used.
- For example --min-size 50k means no files smaller than 50kByte will be
- transferred.
- --max-size - Don’t transfer any file larger than this
- This option controls the maximum size file which will be transferred.
- This defaults to kBytes but a suffix of k, M, or G can be used.
- For example --max-size 1G means no files larger than 1GByte will be
- transferred.
- --max-age - Don’t transfer any file older than this
- This option controls the maximum age of files to transfer. Give in
- seconds or with a suffix of:
- - ms - Milliseconds
- - s - Seconds
- - m - Minutes
- - h - Hours
- - d - Days
- - w - Weeks
- - M - Months
- - y - Years
- For example --max-age 2d means no files older than 2 days will be
- transferred.
- --min-age - Don’t transfer any file younger than this
- This option controls the minimum age of files to transfer. Give in
- seconds or with a suffix (see --max-age for list of suffixes)
- For example --min-age 2d means no files younger than 2 days will be
- transferred.
- --delete-excluded - Delete files on dest excluded from sync
- IMPORTANT this flag is dangerous - use with --dry-run and -v first.
- When doing rclone sync this will delete any files which are excluded
- from the sync on the destination.
- If for example you did a sync from A to B without the --min-size 50k
- flag
- rclone sync A: B:
- Then you repeated it like this with the --delete-excluded
- rclone --min-size 50k --delete-excluded sync A: B:
- This would delete all files on B which are less than 50 kBytes as these
- are now excluded from the sync.
- Always test first with --dry-run and -v before using this flag.
- --dump filters - dump the filters to the output
- This dumps the defined filters to the output as regular expressions.
- Useful for debugging.
- --ignore-case - make searches case insensitive
- Normally filter patterns are case sensitive. If this flag is supplied
- then filter patterns become case insensitive.
- Normally a --include "file.txt" will not match a file called FILE.txt.
- However if you use the --ignore-case flag then --include "file.txt" this
- will match a file called FILE.txt.
- Quoting shell metacharacters
- The examples above may not work verbatim in your shell as they have
- shell metacharacters in them (eg *), and may require quoting.
- Eg linux, OSX
- - --include \*.jpg
- - --include '*.jpg'
- - --include='*.jpg'
- In Windows the expansion is done by the command not the shell so this
- should work fine
- - --include *.jpg
- Exclude directory based on a file
- It is possible to exclude a directory based on a file, which is present
- in this directory. Filename should be specified using the
- --exclude-if-present flag. This flag has a priority over the other
- filtering flags.
- Imagine, you have the following directory structure:
- dir1/file1
- dir1/dir2/file2
- dir1/dir2/dir3/file3
- dir1/dir2/dir3/.ignore
- You can exclude dir3 from sync by running the following command:
- rclone sync --exclude-if-present .ignore dir1 remote:backup
- Currently only one filename is supported, i.e. --exclude-if-present
- should not be used multiple times.
- GUI (EXPERIMENTAL)
- Rclone can serve a web based GUI (graphical user interface). This is
- somewhat experimental at the moment so things may be subject to change.
- Run this command in a terminal and rclone will download and then display
- the GUI in a web browser.
- rclone rcd --rc-web-gui
- This will produce logs like this and rclone needs to continue to run to
- serve the GUI:
- 2019/08/25 11:40:14 NOTICE: A new release for gui is present at https://github.com/rclone/rclone-webui-react/releases/download/v0.0.6/currentbuild.zip
- 2019/08/25 11:40:14 NOTICE: Downloading webgui binary. Please wait. [Size: 3813937, Path : /home/USER/.cache/rclone/webgui/v0.0.6.zip]
- 2019/08/25 11:40:16 NOTICE: Unzipping
- 2019/08/25 11:40:16 NOTICE: Serving remote control on http://127.0.0.1:5572/
- This assumes you are running rclone locally on your machine. It is
- possible to separate the rclone and the GUI - see below for details.
- If you wish to check for updates then you can add --rc-web-gui-update to
- the command line.
- If you find your GUI broken, you may force it to update by add
- --rc-web-gui-force-update.
- By default, rclone will open your browser. Add
- --rc-web-gui-no-open-browser to disable this feature.
- Using the GUI
- Once the GUI opens, you will be looking at the dashboard which has an
- overall overview.
- On the left hand side you will see a series of view buttons you can
- click on:
- - Dashboard - main overview
- - Configs - examine and create new configurations
- - Explorer - view, download and upload files to the cloud storage
- systems
- - Backend - view or alter the backend config
- - Log out
- (More docs and walkthrough video to come!)
- How it works
- When you run the rclone rcd --rc-web-gui this is what happens
- - Rclone starts but only runs the remote control API (“rc”).
- - The API is bound to localhost with an auto generated username and
- password.
- - If the API bundle is missing then rclone will download it.
- - rclone will start serving the files from the API bundle over the
- same port as the API
- - rclone will open the browser with a login_token so it can log
- straight in.
- Advanced use
- The rclone rcd may use any of the flags documented on the rc page.
- The flag --rc-web-gui is shorthand for
- - Download the web GUI if necessary
- - Check we are using some authentication
- - --rc-user gui
- - --rc-pass <random password>
- - --rc-serve
- These flags can be overidden as desired.
- See also the rclone rcd documentation.
- Example: Running a public GUI
- For example the GUI could be served on a public port over SSL using an
- htpasswd file using the following flags:
- - --rc-web-gui
- - --rc-addr :443
- - --rc-htpasswd /path/to/htpasswd
- - --rc-cert /path/to/ssl.crt
- - --rc-key /path/to/ssl.key
- Example: Running a GUI behind a proxy
- If you want to run the GUI behind a proxy at /rclone you could use these
- flags:
- - --rc-web-gui
- - --rc-baseurl rclone
- - --rc-htpasswd /path/to/htpasswd
- Or instead of htpassword if you just want a single user and password:
- - --rc-user me
- - --rc-pass mypassword
- Project
- The GUI is being developed in the: rclone/rclone-webui-react
- respository.
- Bug reports and contributions are very welcome :-)
- If you have questions then please ask them on the rclone forum.
- REMOTE CONTROLLING RCLONE
- If rclone is run with the --rc flag then it starts an http server which
- can be used to remote control rclone.
- If you just want to run a remote control then see the rcd command.
- NB this is experimental and everything here is subject to change!
- Supported parameters
- –rc
- Flag to start the http server listen on remote requests
- –rc-addr=IP
- IPaddress:Port or :Port to bind server to. (default “localhost:5572”)
- –rc-cert=KEY
- SSL PEM key (concatenation of certificate and CA certificate)
- –rc-client-ca=PATH
- Client certificate authority to verify clients with
- –rc-htpasswd=PATH
- htpasswd file - if not provided no authentication is done
- –rc-key=PATH
- SSL PEM Private key
- –rc-max-header-bytes=VALUE
- Maximum size of request header (default 4096)
- –rc-user=VALUE
- User name for authentication.
- –rc-pass=VALUE
- Password for authentication.
- –rc-realm=VALUE
- Realm for authentication (default “rclone”)
- –rc-server-read-timeout=DURATION
- Timeout for server reading data (default 1h0m0s)
- –rc-server-write-timeout=DURATION
- Timeout for server writing data (default 1h0m0s)
- –rc-serve
- Enable the serving of remote objects via the HTTP interface. This means
- objects will be accessible at http://127.0.0.1:5572/ by default, so you
- can browse to http://127.0.0.1:5572/ or http://127.0.0.1:5572/* to see a
- listing of the remotes. Objects may be requested from remotes using this
- syntax http://127.0.0.1:5572/[remote:path]/path/to/object
- Default Off.
- –rc-files /path/to/directory
- Path to local files to serve on the HTTP server.
- If this is set then rclone will serve the files in that directory. It
- will also open the root in the web browser if specified. This is for
- implementing browser based GUIs for rclone functions.
- If --rc-user or --rc-pass is set then the URL that is opened will have
- the authorization in the URL in the http://user:pass@localhost/ style.
- Default Off.
- –rc-web-gui
- Set this flag to serve the default web gui on the same port as rclone.
- Default Off.
- –rc-allow-origin
- Set the allowed Access-Control-Allow-Origin for rc requests.
- Can be used with –rc-web-gui if the rclone is running on different IP
- than the web-gui.
- Default is IP address on which rc is running.
- –rc-web-fetch-url
- Set the URL to fetch the rclone-web-gui files from.
- Default
- https://api.github.com/repos/rclone/rclone-webui-react/releases/latest.
- –rc-web-gui-update
- Set this flag to check and update rclone-webui-react from the
- rc-web-fetch-url.
- Default Off.
- –rc-web-gui-force-update
- Set this flag to force update rclone-webui-react from the
- rc-web-fetch-url.
- Default Off.
- –rc-web-gui-no-open-browser
- Set this flag to disable opening browser automatically when using
- web-gui.
- Default Off.
- –rc-job-expire-duration=DURATION
- Expire finished async jobs older than DURATION (default 60s).
- –rc-job-expire-interval=DURATION
- Interval duration to check for expired async jobs (default 10s).
- –rc-no-auth
- By default rclone will require authorisation to have been set up on the
- rc interface in order to use any methods which access any rclone
- remotes. Eg operations/list is denied as it involved creating a remote
- as is sync/copy.
- If this is set then no authorisation will be required on the server to
- use these methods. The alternative is to use --rc-user and --rc-pass and
- use these credentials in the request.
- Default Off.
- Accessing the remote control via the rclone rc command
- Rclone itself implements the remote control protocol in its rclone rc
- command.
- You can use it like this
- $ rclone rc rc/noop param1=one param2=two
- {
- "param1": "one",
- "param2": "two"
- }
- Run rclone rc on its own to see the help for the installed remote
- control commands.
- rclone rc also supports a --json flag which can be used to send more
- complicated input parameters.
- $ rclone rc --json '{ "p1": [1,"2",null,4], "p2": { "a":1, "b":2 } }' rc/noop
- {
- "p1": [
- 1,
- "2",
- null,
- 4
- ],
- "p2": {
- "a": 1,
- "b": 2
- }
- }
- Special parameters
- The rc interface supports some special parameters which apply to ALL
- commands. These start with _ to show they are different.
- Running asynchronous jobs with _async = true
- Each rc call is classified as a job and it is assigned its own id. By
- default jobs are executed immediately as they are created or
- synchronously.
- If _async has a true value when supplied to an rc call then it will
- return immediately with a job id and the task will be run in the
- background. The job/status call can be used to get information of the
- background job. The job can be queried for up to 1 minute after it has
- finished.
- It is recommended that potentially long running jobs, eg sync/sync,
- sync/copy, sync/move, operations/purge are run with the _async flag to
- avoid any potential problems with the HTTP request and response timing
- out.
- Starting a job with the _async flag:
- $ rclone rc --json '{ "p1": [1,"2",null,4], "p2": { "a":1, "b":2 }, "_async": true }' rc/noop
- {
- "jobid": 2
- }
- Query the status to see if the job has finished. For more information on
- the meaning of these return parameters see the job/status call.
- $ rclone rc --json '{ "jobid":2 }' job/status
- {
- "duration": 0.000124163,
- "endTime": "2018-10-27T11:38:07.911245881+01:00",
- "error": "",
- "finished": true,
- "id": 2,
- "output": {
- "_async": true,
- "p1": [
- 1,
- "2",
- null,
- 4
- ],
- "p2": {
- "a": 1,
- "b": 2
- }
- },
- "startTime": "2018-10-27T11:38:07.911121728+01:00",
- "success": true
- }
- job/list can be used to show the running or recently completed jobs
- $ rclone rc job/list
- {
- "jobids": [
- 2
- ]
- }
- Assigning operations to groups with _group =
- Each rc call has it’s own stats group for tracking it’s metrics. By
- default grouping is done by the composite group name from prefix job/
- and id of the job like so job/1.
- If _group has a value then stats for that request will be grouped under
- that value. This allows caller to group stats under their own name.
- Stats for specific group can be accessed by passing group to core/stats:
- $ rclone rc --json '{ "group": "job/1" }' core/stats
- {
- "speed": 12345
- ...
- }
- Supported commands
- cache/expire: Purge a remote from cache {#cache/expire}
- Purge a remote from the cache backend. Supports either a directory or a
- file. Params: - remote = path to remote (required) - withData =
- true/false to delete cached data (chunks) as well (optional)
- Eg
- rclone rc cache/expire remote=path/to/sub/folder/
- rclone rc cache/expire remote=/ withData=true
- cache/fetch: Fetch file chunks {#cache/fetch}
- Ensure the specified file chunks are cached on disk.
- The chunks= parameter specifies the file chunks to check. It takes a
- comma separated list of array slice indices. The slice indices are
- similar to Python slices: start[:end]
- start is the 0 based chunk number from the beginning of the file to
- fetch inclusive. end is 0 based chunk number from the beginning of the
- file to fetch exclusive. Both values can be negative, in which case they
- count from the back of the file. The value “-5:” represents the last 5
- chunks of a file.
- Some valid examples are: “:5,-5:” -> the first and last five chunks
- “0,-2” -> the first and the second last chunk “0:10” -> the first ten
- chunks
- Any parameter with a key that starts with “file” can be used to specify
- files to fetch, eg
- rclone rc cache/fetch chunks=0 file=hello file2=home/goodbye
- File names will automatically be encrypted when the a crypt remote is
- used on top of the cache.
- cache/stats: Get cache stats {#cache/stats}
- Show statistics for the cache remote.
- config/create: create the config for a remote. {#config/create}
- This takes the following parameters
- - name - name of remote
- - parameters - a map of { “key”: “value” } pairs
- - type - type of the new remote
- See the config create command command for more information on the above.
- Authentication is required for this call.
- config/delete: Delete a remote in the config file. {#config/delete}
- Parameters:
- - name - name of remote to delete
- See the config delete command command for more information on the above.
- Authentication is required for this call.
- config/dump: Dumps the config file. {#config/dump}
- Returns a JSON object: - key: value
- Where keys are remote names and values are the config parameters.
- See the config dump command command for more information on the above.
- Authentication is required for this call.
- config/get: Get a remote in the config file. {#config/get}
- Parameters:
- - name - name of remote to get
- See the config dump command command for more information on the above.
- Authentication is required for this call.
- config/listremotes: Lists the remotes in the config file. {#config/listremotes}
- Returns - remotes - array of remote names
- See the listremotes command command for more information on the above.
- Authentication is required for this call.
- config/password: password the config for a remote. {#config/password}
- This takes the following parameters
- - name - name of remote
- - parameters - a map of { “key”: “value” } pairs
- See the config password command command for more information on the
- above.
- Authentication is required for this call.
- config/providers: Shows how providers are configured in the config file. {#config/providers}
- Returns a JSON object: - providers - array of objects
- See the config providers command command for more information on the
- above.
- Authentication is required for this call.
- config/update: update the config for a remote. {#config/update}
- This takes the following parameters
- - name - name of remote
- - parameters - a map of { “key”: “value” } pairs
- See the config update command command for more information on the above.
- Authentication is required for this call.
- core/bwlimit: Set the bandwidth limit. {#core/bwlimit}
- This sets the bandwidth limit to that passed in.
- Eg
- rclone rc core/bwlimit rate=off
- {
- "bytesPerSecond": -1,
- "rate": "off"
- }
- rclone rc core/bwlimit rate=1M
- {
- "bytesPerSecond": 1048576,
- "rate": "1M"
- }
- If the rate parameter is not suppied then the bandwidth is queried
- rclone rc core/bwlimit
- {
- "bytesPerSecond": 1048576,
- "rate": "1M"
- }
- The format of the parameter is exactly the same as passed to –bwlimit
- except only one bandwidth may be specified.
- In either case “rate” is returned as a human readable string, and
- “bytesPerSecond” is returned as a number.
- core/gc: Runs a garbage collection. {#core/gc}
- This tells the go runtime to do a garbage collection run. It isn’t
- necessary to call this normally, but it can be useful for debugging
- memory problems.
- core/group-list: Returns list of stats. {#core/group-list}
- This returns list of stats groups currently in memory.
- Returns the following values:
- {
- "groups": an array of group names:
- [
- "group1",
- "group2",
- ...
- ]
- }
- core/memstats: Returns the memory statistics {#core/memstats}
- This returns the memory statistics of the running program. What the
- values mean are explained in the go docs:
- https://golang.org/pkg/runtime/#MemStats
- The most interesting values for most people are:
- - HeapAlloc: This is the amount of memory rclone is actually using
- - HeapSys: This is the amount of memory rclone has obtained from the
- OS
- - Sys: this is the total amount of memory requested from the OS
- - It is virtual memory so may include unused memory
- core/obscure: Obscures a string passed in. {#core/obscure}
- Pass a clear string and rclone will obscure it for the config file: -
- clear - string
- Returns - obscured - string
- core/pid: Return PID of current process {#core/pid}
- This returns PID of current process. Useful for stopping rclone process.
- core/quit: Terminates the app. {#core/quit}
- (optional) Pass an exit code to be used for terminating the app: -
- exitCode - int
- core/stats: Returns stats about current transfers. {#core/stats}
- This returns all available stats:
- rclone rc core/stats
- If group is not provided then summed up stats for all groups will be
- returned.
- Parameters
- - group - name of the stats group (string)
- Returns the following values:
- {
- "speed": average speed in bytes/sec since start of the process,
- "bytes": total transferred bytes since the start of the process,
- "errors": number of errors,
- "fatalError": whether there has been at least one FatalError,
- "retryError": whether there has been at least one non-NoRetryError,
- "checks": number of checked files,
- "transfers": number of transferred files,
- "deletes" : number of deleted files,
- "elapsedTime": time in seconds since the start of the process,
- "lastError": last occurred error,
- "transferring": an array of currently active file transfers:
- [
- {
- "bytes": total transferred bytes for this file,
- "eta": estimated time in seconds until file transfer completion
- "name": name of the file,
- "percentage": progress of the file transfer in percent,
- "speed": speed in bytes/sec,
- "speedAvg": speed in bytes/sec as an exponentially weighted moving average,
- "size": size of the file in bytes
- }
- ],
- "checking": an array of names of currently active file checks
- []
- }
- Values for “transferring”, “checking” and “lastError” are only assigned
- if data is available. The value for “eta” is null if an eta cannot be
- determined.
- core/stats-delete: Delete stats group. {#core/stats-delete}
- This deletes entire stats group
- Parameters
- - group - name of the stats group (string)
- core/stats-reset: Reset stats. {#core/stats-reset}
- This clears counters, errors and finished transfers for all stats or
- specific stats group if group is provided.
- Parameters
- - group - name of the stats group (string)
- core/transferred: Returns stats about completed transfers. {#core/transferred}
- This returns stats about completed transfers:
- rclone rc core/transferred
- If group is not provided then completed transfers for all groups will be
- returned.
- Note only the last 100 completed transfers are returned.
- Parameters
- - group - name of the stats group (string)
- Returns the following values:
- {
- "transferred": an array of completed transfers (including failed ones):
- [
- {
- "name": name of the file,
- "size": size of the file in bytes,
- "bytes": total transferred bytes for this file,
- "checked": if the transfer is only checked (skipped, deleted),
- "timestamp": integer representing millisecond unix epoch,
- "error": string description of the error (empty if successfull),
- "jobid": id of the job that this transfer belongs to
- }
- ]
- }
- core/version: Shows the current version of rclone and the go runtime. {#core/version}
- This shows the current version of go and the go runtime
- - version - rclone version, eg “v1.44”
- - decomposed - version number as [major, minor, patch, subpatch]
- - note patch and subpatch will be 999 for a git compiled version
- - isGit - boolean - true if this was compiled from the git version
- - os - OS in use as according to Go
- - arch - cpu architecture in use according to Go
- - goVersion - version of Go runtime in use
- debug/set-block-profile-rate: Set runtime.SetBlockProfileRate for blocking profiling. {#debug/set-block-profile-rate}
- SetBlockProfileRate controls the fraction of goroutine blocking events
- that are reported in the blocking profile. The profiler aims to sample
- an average of one blocking event per rate nanoseconds spent blocked.
- To include every blocking event in the profile, pass rate = 1. To turn
- off profiling entirely, pass rate <= 0.
- After calling this you can use this to see the blocking profile:
- go tool pprof http://localhost:5572/debug/pprof/block
- Parameters
- - rate - int
- debug/set-mutex-profile-fraction: Set runtime.SetMutexProfileFraction for mutex profiling. {#debug/set-mutex-profile-fraction}
- SetMutexProfileFraction controls the fraction of mutex contention events
- that are reported in the mutex profile. On average 1/rate events are
- reported. The previous rate is returned.
- To turn off profiling entirely, pass rate 0. To just read the current
- rate, pass rate < 0. (For n>1 the details of sampling may change.)
- Once this is set you can look use this to profile the mutex contention:
- go tool pprof http://localhost:5572/debug/pprof/mutex
- Parameters
- - rate - int
- Results
- - previousRate - int
- job/list: Lists the IDs of the running jobs {#job/list}
- Parameters - None
- Results
- - jobids - array of integer job ids
- job/status: Reads the status of the job ID {#job/status}
- Parameters
- - jobid - id of the job (integer)
- Results
- - finished - boolean
- - duration - time in seconds that the job ran for
- - endTime - time the job finished (eg
- “2018-10-26T18:50:20.528746884+01:00”)
- - error - error from the job or empty string for no error
- - finished - boolean whether the job has finished or not
- - id - as passed in above
- - startTime - time the job started (eg
- “2018-10-26T18:50:20.528336039+01:00”)
- - success - boolean - true for success false otherwise
- - output - output of the job as would have been returned if called
- synchronously
- - progress - output of the progress related to the underlying job
- job/stop: Stop the running job {#job/stop}
- Parameters
- - jobid - id of the job (integer)
- operations/about: Return the space used on the remote {#operations/about}
- This takes the following parameters
- - fs - a remote name string eg “drive:”
- The result is as returned from rclone about –json
- See the about command command for more information on the above.
- Authentication is required for this call.
- operations/cleanup: Remove trashed files in the remote or path {#operations/cleanup}
- This takes the following parameters
- - fs - a remote name string eg “drive:”
- See the cleanup command command for more information on the above.
- Authentication is required for this call.
- operations/copyfile: Copy a file from source remote to destination remote {#operations/copyfile}
- This takes the following parameters
- - srcFs - a remote name string eg “drive:” for the source
- - srcRemote - a path within that remote eg “file.txt” for the source
- - dstFs - a remote name string eg “drive2:” for the destination
- - dstRemote - a path within that remote eg “file2.txt” for the
- destination
- Authentication is required for this call.
- operations/copyurl: Copy the URL to the object {#operations/copyurl}
- This takes the following parameters
- - fs - a remote name string eg “drive:”
- - remote - a path within that remote eg “dir”
- - url - string, URL to read from
- - autoFilename - boolean, set to true to retrieve destination file
- name from url See the copyurl command command for more information
- on the above.
- Authentication is required for this call.
- operations/delete: Remove files in the path {#operations/delete}
- This takes the following parameters
- - fs - a remote name string eg “drive:”
- See the delete command command for more information on the above.
- Authentication is required for this call.
- operations/deletefile: Remove the single file pointed to {#operations/deletefile}
- This takes the following parameters
- - fs - a remote name string eg “drive:”
- - remote - a path within that remote eg “dir”
- See the deletefile command command for more information on the above.
- Authentication is required for this call.
- operations/fsinfo: Return information about the remote {#operations/fsinfo}
- This takes the following parameters
- - fs - a remote name string eg “drive:”
- This returns info about the remote passed in;
- {
- // optional features and whether they are available or not
- "Features": {
- "About": true,
- "BucketBased": false,
- "CanHaveEmptyDirectories": true,
- "CaseInsensitive": false,
- "ChangeNotify": false,
- "CleanUp": false,
- "Copy": false,
- "DirCacheFlush": false,
- "DirMove": true,
- "DuplicateFiles": false,
- "GetTier": false,
- "ListR": false,
- "MergeDirs": false,
- "Move": true,
- "OpenWriterAt": true,
- "PublicLink": false,
- "Purge": true,
- "PutStream": true,
- "PutUnchecked": false,
- "ReadMimeType": false,
- "ServerSideAcrossConfigs": false,
- "SetTier": false,
- "SetWrapper": false,
- "UnWrap": false,
- "WrapFs": false,
- "WriteMimeType": false
- },
- // Names of hashes available
- "Hashes": [
- "MD5",
- "SHA-1",
- "DropboxHash",
- "QuickXorHash"
- ],
- "Name": "local", // Name as created
- "Precision": 1, // Precision of timestamps in ns
- "Root": "/", // Path as created
- "String": "Local file system at /" // how the remote will appear in logs
- }
- This command does not have a command line equivalent so use this
- instead:
- rclone rc --loopback operations/fsinfo fs=remote:
- operations/list: List the given remote and path in JSON format {#operations/list}
- This takes the following parameters
- - fs - a remote name string eg “drive:”
- - remote - a path within that remote eg “dir”
- - opt - a dictionary of options to control the listing (optional)
- - recurse - If set recurse directories
- - noModTime - If set return modification time
- - showEncrypted - If set show decrypted names
- - showOrigIDs - If set show the IDs for each item if known
- - showHash - If set return a dictionary of hashes
- The result is
- - list
- - This is an array of objects as described in the lsjson command
- See the lsjson command for more information on the above and examples.
- Authentication is required for this call.
- operations/mkdir: Make a destination directory or container {#operations/mkdir}
- This takes the following parameters
- - fs - a remote name string eg “drive:”
- - remote - a path within that remote eg “dir”
- See the mkdir command command for more information on the above.
- Authentication is required for this call.
- operations/movefile: Move a file from source remote to destination remote {#operations/movefile}
- This takes the following parameters
- - srcFs - a remote name string eg “drive:” for the source
- - srcRemote - a path within that remote eg “file.txt” for the source
- - dstFs - a remote name string eg “drive2:” for the destination
- - dstRemote - a path within that remote eg “file2.txt” for the
- destination
- Authentication is required for this call.
- operations/publiclink: Create or retrieve a public link to the given file or folder. {#operations/publiclink}
- This takes the following parameters
- - fs - a remote name string eg “drive:”
- - remote - a path within that remote eg “dir”
- Returns
- - url - URL of the resource
- See the link command command for more information on the above.
- Authentication is required for this call.
- operations/purge: Remove a directory or container and all of its contents {#operations/purge}
- This takes the following parameters
- - fs - a remote name string eg “drive:”
- - remote - a path within that remote eg “dir”
- See the purge command command for more information on the above.
- Authentication is required for this call.
- operations/rmdir: Remove an empty directory or container {#operations/rmdir}
- This takes the following parameters
- - fs - a remote name string eg “drive:”
- - remote - a path within that remote eg “dir”
- See the rmdir command command for more information on the above.
- Authentication is required for this call.
- operations/rmdirs: Remove all the empty directories in the path {#operations/rmdirs}
- This takes the following parameters
- - fs - a remote name string eg “drive:”
- - remote - a path within that remote eg “dir”
- - leaveRoot - boolean, set to true not to delete the root
- See the rmdirs command command for more information on the above.
- Authentication is required for this call.
- operations/size: Count the number of bytes and files in remote {#operations/size}
- This takes the following parameters
- - fs - a remote name string eg “drive:path/to/dir”
- Returns
- - count - number of files
- - bytes - number of bytes in those files
- See the size command command for more information on the above.
- Authentication is required for this call.
- options/blocks: List all the option blocks {#options/blocks}
- Returns - options - a list of the options block names
- options/get: Get all the options {#options/get}
- Returns an object where keys are option block names and values are an
- object with the current option values in.
- This shows the internal names of the option within rclone which should
- map to the external options very easily with a few exceptions.
- options/set: Set an option {#options/set}
- Parameters
- - option block name containing an object with
- - key: value
- Repeated as often as required.
- Only supply the options you wish to change. If an option is unknown it
- will be silently ignored. Not all options will have an effect when
- changed like this.
- For example:
- This sets DEBUG level logs (-vv)
- rclone rc options/set --json '{"main": {"LogLevel": 8}}'
- And this sets INFO level logs (-v)
- rclone rc options/set --json '{"main": {"LogLevel": 7}}'
- And this sets NOTICE level logs (normal without -v)
- rclone rc options/set --json '{"main": {"LogLevel": 6}}'
- rc/error: This returns an error {#rc/error}
- This returns an error with the input as part of its error string. Useful
- for testing error handling.
- rc/list: List all the registered remote control commands {#rc/list}
- This lists all the registered remote control commands as a JSON map in
- the commands response.
- rc/noop: Echo the input to the output parameters {#rc/noop}
- This echoes the input parameters to the output parameters for testing
- purposes. It can be used to check that rclone is still alive and to
- check that parameter passing is working properly.
- rc/noopauth: Echo the input to the output parameters requiring auth {#rc/noopauth}
- This echoes the input parameters to the output parameters for testing
- purposes. It can be used to check that rclone is still alive and to
- check that parameter passing is working properly.
- Authentication is required for this call.
- sync/copy: copy a directory from source remote to destination remote {#sync/copy}
- This takes the following parameters
- - srcFs - a remote name string eg “drive:src” for the source
- - dstFs - a remote name string eg “drive:dst” for the destination
- See the copy command command for more information on the above.
- Authentication is required for this call.
- sync/move: move a directory from source remote to destination remote {#sync/move}
- This takes the following parameters
- - srcFs - a remote name string eg “drive:src” for the source
- - dstFs - a remote name string eg “drive:dst” for the destination
- - deleteEmptySrcDirs - delete empty src directories if set
- See the move command command for more information on the above.
- Authentication is required for this call.
- sync/sync: sync a directory from source remote to destination remote {#sync/sync}
- This takes the following parameters
- - srcFs - a remote name string eg “drive:src” for the source
- - dstFs - a remote name string eg “drive:dst” for the destination
- See the sync command command for more information on the above.
- Authentication is required for this call.
- vfs/forget: Forget files or directories in the directory cache. {#vfs/forget}
- This forgets the paths in the directory cache causing them to be re-read
- from the remote when needed.
- If no paths are passed in then it will forget all the paths in the
- directory cache.
- rclone rc vfs/forget
- Otherwise pass files or dirs in as file=path or dir=path. Any parameter
- key starting with file will forget that file and any starting with dir
- will forget that dir, eg
- rclone rc vfs/forget file=hello file2=goodbye dir=home/junk
- vfs/poll-interval: Get the status or update the value of the poll-interval option. {#vfs/poll-interval}
- Without any parameter given this returns the current status of the
- poll-interval setting.
- When the interval=duration parameter is set, the poll-interval value is
- updated and the polling function is notified. Setting interval=0
- disables poll-interval.
- rclone rc vfs/poll-interval interval=5m
- The timeout=duration parameter can be used to specify a time to wait for
- the current poll function to apply the new value. If timeout is less or
- equal 0, which is the default, wait indefinitely.
- The new poll-interval value will only be active when the timeout is not
- reached.
- If poll-interval is updated or disabled temporarily, some changes might
- not get picked up by the polling function, depending on the used remote.
- vfs/refresh: Refresh the directory cache. {#vfs/refresh}
- This reads the directories for the specified paths and freshens the
- directory cache.
- If no paths are passed in then it will refresh the root directory.
- rclone rc vfs/refresh
- Otherwise pass directories in as dir=path. Any parameter key starting
- with dir will refresh that directory, eg
- rclone rc vfs/refresh dir=home/junk dir2=data/misc
- If the parameter recursive=true is given the whole directory tree will
- get refreshed. This refresh will use –fast-list if enabled.
- Accessing the remote control via HTTP
- Rclone implements a simple HTTP based protocol.
- Each endpoint takes an JSON object and returns a JSON object or an
- error. The JSON objects are essentially a map of string names to values.
- All calls must made using POST.
- The input objects can be supplied using URL parameters, POST parameters
- or by supplying “Content-Type: application/json” and a JSON blob in the
- body. There are examples of these below using curl.
- The response will be a JSON blob in the body of the response. This is
- formatted to be reasonably human readable.
- Error returns
- If an error occurs then there will be an HTTP error status (eg 500) and
- the body of the response will contain a JSON encoded error object, eg
- {
- "error": "Expecting string value for key \"remote\" (was float64)",
- "input": {
- "fs": "/tmp",
- "remote": 3
- },
- "status": 400
- "path": "operations/rmdir",
- }
- The keys in the error response are - error - error string - input - the
- input parameters to the call - status - the HTTP status code - path -
- the path of the call
- CORS
- The sever implements basic CORS support and allows all origins for that.
- The response to a preflight OPTIONS request will echo the requested
- “Access-Control-Request-Headers” back.
- Using POST with URL parameters only
- curl -X POST 'http://localhost:5572/rc/noop?potato=1&sausage=2'
- Response
- {
- "potato": "1",
- "sausage": "2"
- }
- Here is what an error response looks like:
- curl -X POST 'http://localhost:5572/rc/error?potato=1&sausage=2'
- {
- "error": "arbitrary error on input map[potato:1 sausage:2]",
- "input": {
- "potato": "1",
- "sausage": "2"
- }
- }
- Note that curl doesn’t return errors to the shell unless you use the -f
- option
- $ curl -f -X POST 'http://localhost:5572/rc/error?potato=1&sausage=2'
- curl: (22) The requested URL returned error: 400 Bad Request
- $ echo $?
- 22
- Using POST with a form
- curl --data "potato=1" --data "sausage=2" http://localhost:5572/rc/noop
- Response
- {
- "potato": "1",
- "sausage": "2"
- }
- Note that you can combine these with URL parameters too with the POST
- parameters taking precedence.
- curl --data "potato=1" --data "sausage=2" "http://localhost:5572/rc/noop?rutabaga=3&sausage=4"
- Response
- {
- "potato": "1",
- "rutabaga": "3",
- "sausage": "4"
- }
- Using POST with a JSON blob
- curl -H "Content-Type: application/json" -X POST -d '{"potato":2,"sausage":1}' http://localhost:5572/rc/noop
- response
- {
- "password": "xyz",
- "username": "xyz"
- }
- This can be combined with URL parameters too if required. The JSON blob
- takes precedence.
- curl -H "Content-Type: application/json" -X POST -d '{"potato":2,"sausage":1}' 'http://localhost:5572/rc/noop?rutabaga=3&potato=4'
- {
- "potato": 2,
- "rutabaga": "3",
- "sausage": 1
- }
- Debugging rclone with pprof
- If you use the --rc flag this will also enable the use of the go
- profiling tools on the same port.
- To use these, first install go.
- Debugging memory use
- To profile rclone’s memory use you can run:
- go tool pprof -web http://localhost:5572/debug/pprof/heap
- This should open a page in your browser showing what is using what
- memory.
- You can also use the -text flag to produce a textual summary
- $ go tool pprof -text http://localhost:5572/debug/pprof/heap
- Showing nodes accounting for 1537.03kB, 100% of 1537.03kB total
- flat flat% sum% cum cum%
- 1024.03kB 66.62% 66.62% 1024.03kB 66.62% github.com/rclone/rclone/vendor/golang.org/x/net/http2/hpack.addDecoderNode
- 513kB 33.38% 100% 513kB 33.38% net/http.newBufioWriterSize
- 0 0% 100% 1024.03kB 66.62% github.com/rclone/rclone/cmd/all.init
- 0 0% 100% 1024.03kB 66.62% github.com/rclone/rclone/cmd/serve.init
- 0 0% 100% 1024.03kB 66.62% github.com/rclone/rclone/cmd/serve/restic.init
- 0 0% 100% 1024.03kB 66.62% github.com/rclone/rclone/vendor/golang.org/x/net/http2.init
- 0 0% 100% 1024.03kB 66.62% github.com/rclone/rclone/vendor/golang.org/x/net/http2/hpack.init
- 0 0% 100% 1024.03kB 66.62% github.com/rclone/rclone/vendor/golang.org/x/net/http2/hpack.init.0
- 0 0% 100% 1024.03kB 66.62% main.init
- 0 0% 100% 513kB 33.38% net/http.(*conn).readRequest
- 0 0% 100% 513kB 33.38% net/http.(*conn).serve
- 0 0% 100% 1024.03kB 66.62% runtime.main
- Debugging go routine leaks
- Memory leaks are most often caused by go routine leaks keeping memory
- alive which should have been garbage collected.
- See all active go routines using
- curl http://localhost:5572/debug/pprof/goroutine?debug=1
- Or go to http://localhost:5572/debug/pprof/goroutine?debug=1 in your
- browser.
- Other profiles to look at
- You can see a summary of profiles available at
- http://localhost:5572/debug/pprof/
- Here is how to use some of them:
- - Memory: go tool pprof http://localhost:5572/debug/pprof/heap
- - Go routines:
- curl http://localhost:5572/debug/pprof/goroutine?debug=1
- - 30-second CPU profile:
- go tool pprof http://localhost:5572/debug/pprof/profile
- - 5-second execution trace:
- wget http://localhost:5572/debug/pprof/trace?seconds=5
- - Goroutine blocking profile
- - Enable first with: rclone rc debug/set-block-profile-rate rate=1
- (docs)
- - go tool pprof http://localhost:5572/debug/pprof/block
- - Contended mutexes:
- - Enable first with:
- rclone rc debug/set-mutex-profile-fraction rate=1 (docs)
- - go tool pprof http://localhost:5572/debug/pprof/mutex
- See the net/http/pprof docs for more info on how to use the profiling
- and for a general overview see the Go team’s blog post on profiling go
- programs.
- The profiling hook is zero overhead unless it is used.
- OVERVIEW OF CLOUD STORAGE SYSTEMS
- Each cloud storage system is slightly different. Rclone attempts to
- provide a unified interface to them, but some underlying differences
- show through.
- Features
- Here is an overview of the major features of each cloud storage system.
- Name Hash ModTime Case Insensitive Duplicate Files MIME Type
- ------------------------------ -------------- --------- ------------------ ----------------- -----------
- 1Fichier Whirlpool No No Yes R
- Amazon Drive MD5 No Yes No R
- Amazon S3 MD5 Yes No No R/W
- Backblaze B2 SHA1 Yes No No R/W
- Box SHA1 Yes Yes No -
- Citrix ShareFile MD5 Yes Yes No -
- Dropbox DBHASH † Yes Yes No -
- FTP - No No No -
- Google Cloud Storage MD5 Yes No No R/W
- Google Drive MD5 Yes No Yes R/W
- Google Photos - No No Yes R
- HTTP - No No No R
- Hubic MD5 Yes No No R/W
- Jottacloud MD5 Yes Yes No R/W
- Koofr MD5 No Yes No -
- Mail.ru Cloud Mailru ‡‡‡ Yes Yes No -
- Mega - No No Yes -
- Memory MD5 Yes No No -
- Microsoft Azure Blob Storage MD5 Yes No No R/W
- Microsoft OneDrive SHA1 ‡‡ Yes Yes No R
- OpenDrive MD5 Yes Yes No -
- Openstack Swift MD5 Yes No No R/W
- pCloud MD5, SHA1 Yes No No W
- premiumize.me - No Yes No R
- put.io CRC-32 Yes No Yes R
- QingStor MD5 No No No R/W
- SFTP MD5, SHA1 ‡ Yes Depends No -
- SugarSync - No No No -
- WebDAV MD5, SHA1 †† Yes ††† Depends No -
- Yandex Disk MD5 Yes No No R/W
- The local filesystem All Yes Depends No -
- Hash
- The cloud storage system supports various hash types of the objects. The
- hashes are used when transferring data as an integrity check and can be
- specifically used with the --checksum flag in syncs and in the check
- command.
- To use the verify checksums when transferring between cloud storage
- systems they must support a common hash type.
- † Note that Dropbox supports its own custom hash. This is an SHA256 sum
- of all the 4MB block SHA256s.
- ‡ SFTP supports checksums if the same login has shell access and md5sum
- or sha1sum as well as echo are in the remote’s PATH.
- †† WebDAV supports hashes when used with Owncloud and Nextcloud only.
- ††† WebDAV supports modtimes when used with Owncloud and Nextcloud only.
- ‡‡ Microsoft OneDrive Personal supports SHA1 hashes, whereas OneDrive
- for business and SharePoint server support Microsoft’s own QuickXorHash.
- ‡‡‡ Mail.ru uses its own modified SHA1 hash
- ModTime
- The cloud storage system supports setting modification times on objects.
- If it does then this enables a using the modification times as part of
- the sync. If not then only the size will be checked by default, though
- the MD5SUM can be checked with the --checksum flag.
- All cloud storage systems support some kind of date on the object and
- these will be set when transferring from the cloud storage system.
- Case Insensitive
- If a cloud storage systems is case sensitive then it is possible to have
- two files which differ only in case, eg file.txt and FILE.txt. If a
- cloud storage system is case insensitive then that isn’t possible.
- This can cause problems when syncing between a case insensitive system
- and a case sensitive system. The symptom of this is that no matter how
- many times you run the sync it never completes fully.
- The local filesystem and SFTP may or may not be case sensitive depending
- on OS.
- - Windows - usually case insensitive, though case is preserved
- - OSX - usually case insensitive, though it is possible to format case
- sensitive
- - Linux - usually case sensitive, but there are case insensitive file
- systems (eg FAT formatted USB keys)
- Most of the time this doesn’t cause any problems as people tend to avoid
- files whose name differs only by case even on case sensitive systems.
- Duplicate files
- If a cloud storage system allows duplicate files then it can have two
- objects with the same name.
- This confuses rclone greatly when syncing - use the rclone dedupe
- command to rename or remove duplicates.
- Restricted filenames
- Some cloud storage systems might have restrictions on the characters
- that are usable in file or directory names. When rclone detects such a
- name during a file upload, it will transparently replace the restricted
- characters with similar looking Unicode characters.
- This process is designed to avoid ambiguous file names as much as
- possible and allow to move files between many cloud storage systems
- transparently.
- The name shown by rclone to the user or during log output will only
- contain a minimal set of replaced characters to ensure correct
- formatting and not necessarily the actual name used on the cloud
- storage.
- This transformation is reversed when downloading a file or parsing
- rclone arguments. For example, when uploading a file named my file?.txt
- to Onedrive will be displayed as my file?.txt on the console, but stored
- as my file?.txt (the ? gets replaced by the similar looking ?
- character) to Onedrive. The reverse transformation allows to read a
- fileunusual/name.txt from Google Drive, by passing the name
- unusual/name.txt (the / needs to be replaced by the similar looking /
- character) on the command line.
- Default restricted characters
- The table below shows the characters that are replaced by default.
- When a replacement character is found in a filename, this character will
- be escaped with the ‛ character to avoid ambiguous file names. (e.g. a
- file named ␀.txt would shown as ‛␀.txt)
- Each cloud storage backend can use a different set of characters, which
- will be specified in the documentation for each backend.
- Character Value Replacement
- ----------- ------- -------------
- NUL 0x00 ␀
- SOH 0x01 ␁
- STX 0x02 ␂
- ETX 0x03 ␃
- EOT 0x04 ␄
- ENQ 0x05 ␅
- ACK 0x06 ␆
- BEL 0x07 ␇
- BS 0x08 ␈
- HT 0x09 ␉
- LF 0x0A ␊
- VT 0x0B ␋
- FF 0x0C ␌
- CR 0x0D ␍
- SO 0x0E ␎
- SI 0x0F ␏
- DLE 0x10 ␐
- DC1 0x11 ␑
- DC2 0x12 ␒
- DC3 0x13 ␓
- DC4 0x14 ␔
- NAK 0x15 ␕
- SYN 0x16 ␖
- ETB 0x17 ␗
- CAN 0x18 ␘
- EM 0x19 ␙
- SUB 0x1A ␚
- ESC 0x1B ␛
- FS 0x1C ␜
- GS 0x1D ␝
- RS 0x1E ␞
- US 0x1F ␟
- / 0x2F /
- DEL 0x7F ␡
- The default encoding will also encode these file names as they are
- problematic with many cloud storage systems.
- File name Replacement
- ----------- -------------
- . .
- .. ..
- Invalid UTF-8 bytes
- Some backends only support a sequence of well formed UTF-8 bytes as file
- or directory names.
- In this case all invalid UTF-8 bytes will be replaced with a quoted
- representation of the byte value to allow uploading a file to such a
- backend. For example, the invalid byte 0xFE will be encoded as ‛FE.
- A common source of invalid UTF-8 bytes are local filesystems, that store
- names in a different encoding than UTF-8 or UTF-16, like latin1. See the
- local filenames section for details.
- Encoding option
- Most backends have an encoding options, specified as a flag
- --backend-encoding where backend is the name of the backend, or as a
- config parameter encoding (you’ll need to select the Advanced config in
- rclone config to see it).
- This will have default value which encodes and decodes characters in
- such a way as to preserve the maximum number of characters (see above).
- However this can be incorrect in some scenarios, for example if you have
- a Windows file system with characters such as * and ? that you want to
- remain as those characters on the remote rather than being translated to
- * and ?.
- The --backend-encoding flags allow you to change that. You can disable
- the encoding completely with --backend-encoding None or set
- encoding = None in the config file.
- Encoding takes a comma separated list of encodings. You can see the list
- of all available characters by passing an invalid value to this flag, eg
- --local-encoding "help" and rclone help flags encoding will show you the
- defaults for the backends.
- Encoding Characters
- --------------- -------------------------------------------------------------
- Asterisk *
- BackQuote `
- BackSlash \
- Colon :
- CrLf CR 0x0D, LF 0x0A
- Ctl All control characters 0x00-0x1F
- Del DEL 0x7F
- Dollar $
- Dot .
- DoubleQuote "
- Hash #
- InvalidUtf8 An invalid UTF-8 character (eg latin1)
- LeftCrLfHtVt CR 0x0D, LF 0x0A,HT 0x09, VT 0x0B on the left of a string
- LeftPeriod . on the left of a string
- LeftSpace SPACE on the left of a string
- LeftTilde ~ on the left of a string
- LtGt <, >
- None No characters are encoded
- Percent %
- Pipe |
- Question ?
- RightCrLfHtVt CR 0x0D, LF 0x0A, HT 0x09, VT 0x0B on the right of a string
- RightPeriod . on the right of a string
- RightSpace SPACE on the right of a string
- SingleQuote '
- Slash /
- To take a specific example, the FTP backend’s default encoding is
- --ftp-encoding "Slash,Del,Ctl,RightSpace,Dot"
- However, let’s say the FTP server is running on Windows and can’t have
- any of the invalid Windows characters in file names. You are backing up
- Linux servers to this FTP server which do have those characters in file
- names. So you would add the Windows set which are
- Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,Ctl,RightSpace,RightPeriod,InvalidUtf8,Dot
- to the existing ones, giving:
- Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,Ctl,RightSpace,RightPeriod,InvalidUtf8,Dot,Del,RightSpace
- This can be specified using the --ftp-encoding flag or using an encoding
- parameter in the config file.
- Or let’s say you have a Windows server but you want to preserve * and
- ?, you would then have this as the encoding (the Windows encoding minus
- Asterisk and Question).
- Slash,LtGt,DoubleQuote,Colon,Pipe,BackSlash,Ctl,RightSpace,RightPeriod,InvalidUtf8,Dot
- This can be specified using the --local-encoding flag or using an
- encoding parameter in the config file.
- MIME Type
- MIME types (also known as media types) classify types of documents using
- a simple text classification, eg text/html or application/pdf.
- Some cloud storage systems support reading (R) the MIME type of objects
- and some support writing (W) the MIME type of objects.
- The MIME type can be important if you are serving files directly to HTTP
- from the storage system.
- If you are copying from a remote which supports reading (R) to a remote
- which supports writing (W) then rclone will preserve the MIME types.
- Otherwise they will be guessed from the extension, or the remote itself
- may assign the MIME type.
- Optional Features
- All the remotes support a basic set of features, but there are some
- optional features supported by some remotes used to make some operations
- more efficient.
- Name Purge Copy Move DirMove CleanUp ListR StreamUpload LinkSharing About EmptyDir
- ------------------------------ ------- ------ ------ --------- --------- ------- -------------- ------------- ------- ----------
- 1Fichier No No No No No No No No No Yes
- Amazon Drive Yes No Yes Yes No #575 No No No #2178 No Yes
- Amazon S3 No Yes No No No Yes Yes No #2178 No No
- Backblaze B2 No Yes No No Yes Yes Yes Yes No No
- Box Yes Yes Yes Yes No #575 No Yes Yes No Yes
- Citrix ShareFile Yes Yes Yes Yes No No Yes No No Yes
- Dropbox Yes Yes Yes Yes No #575 No Yes Yes Yes Yes
- FTP No No Yes Yes No No Yes No #2178 No Yes
- Google Cloud Storage Yes Yes No No No Yes Yes No #2178 No No
- Google Drive Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
- Google Photos No No No No No No No No No No
- HTTP No No No No No No No No #2178 No Yes
- Hubic Yes † Yes No No No Yes Yes No #2178 Yes No
- Jottacloud Yes Yes Yes Yes No Yes No Yes Yes Yes
- Mail.ru Cloud Yes Yes Yes Yes Yes No No Yes Yes Yes
- Mega Yes No Yes Yes Yes No No No #2178 Yes Yes
- Memory No Yes No No No Yes Yes No No No
- Microsoft Azure Blob Storage Yes Yes No No No Yes No No #2178 No No
- Microsoft OneDrive Yes Yes Yes Yes No #575 No No Yes Yes Yes
- OpenDrive Yes Yes Yes Yes No No No No No Yes
- Openstack Swift Yes † Yes No No No Yes Yes No #2178 Yes No
- pCloud Yes Yes Yes Yes Yes No No No #2178 Yes Yes
- premiumize.me Yes No Yes Yes No No No Yes Yes Yes
- put.io Yes No Yes Yes Yes No Yes No #2178 Yes Yes
- QingStor No Yes No No No Yes No No #2178 No No
- SFTP No No Yes Yes No No Yes No #2178 Yes Yes
- SugarSync Yes Yes Yes Yes No No Yes Yes No Yes
- WebDAV Yes Yes Yes Yes No No Yes ‡ No #2178 Yes Yes
- Yandex Disk Yes Yes Yes Yes Yes No Yes Yes Yes Yes
- The local filesystem Yes No Yes Yes No No Yes No Yes Yes
- Purge
- This deletes a directory quicker than just deleting all the files in the
- directory.
- † Note Swift and Hubic implement this in order to delete directory
- markers but they don’t actually have a quicker way of deleting files
- other than deleting them individually.
- ‡ StreamUpload is not supported with Nextcloud
- Copy
- Used when copying an object to and from the same remote. This known as a
- server side copy so you can copy a file without downloading it and
- uploading it again. It is used if you use rclone copy or rclone move if
- the remote doesn’t support Move directly.
- If the server doesn’t support Copy directly then for copy operations the
- file is downloaded then re-uploaded.
- Move
- Used when moving/renaming an object on the same remote. This is known as
- a server side move of a file. This is used in rclone move if the server
- doesn’t support DirMove.
- If the server isn’t capable of Move then rclone simulates it with Copy
- then delete. If the server doesn’t support Copy then rclone will
- download the file and re-upload it.
- DirMove
- This is used to implement rclone move to move a directory if possible.
- If it isn’t then it will use Move on each file (which falls back to Copy
- then download and upload - see Move section).
- CleanUp
- This is used for emptying the trash for a remote by rclone cleanup.
- If the server can’t do CleanUp then rclone cleanup will return an error.
- ListR
- The remote supports a recursive list to list all the contents beneath a
- directory quickly. This enables the --fast-list flag to work. See the
- rclone docs for more details.
- StreamUpload
- Some remotes allow files to be uploaded without knowing the file size in
- advance. This allows certain operations to work without spooling the
- file to local disk first, e.g. rclone rcat.
- LinkSharing
- Sets the necessary permissions on a file or folder and prints a link
- that allows others to access them, even if they don’t have an account on
- the particular cloud provider.
- About
- This is used to fetch quota information from the remote, like bytes
- used/free/quota and bytes used in the trash.
- This is also used to return the space used, available for rclone mount.
- If the server can’t do About then rclone about will return an error.
- EmptyDir
- The remote supports empty directories. See Limitations for details. Most
- Object/Bucket based remotes do not support this.
- GLOBAL FLAGS
- This describes the global flags available to every rclone command split
- into two groups, non backend and backend flags.
- Non Backend Flags
- These flags are available for every command.
- --ask-password Allow prompt for password for encrypted configuration. (default true)
- --auto-confirm If enabled, do not request console confirmation.
- --backup-dir string Make backups into hierarchy based in DIR.
- --bind string Local address to bind to for outgoing connections, IPv4, IPv6 or name.
- --buffer-size SizeSuffix In memory buffer size when reading files for each --transfer. (default 16M)
- --bwlimit BwTimetable Bandwidth limit in kBytes/s, or use suffix b|k|M|G or a full timetable.
- --ca-cert string CA certificate used to verify servers
- --cache-dir string Directory rclone will use for caching. (default "$HOME/.cache/rclone")
- --checkers int Number of checkers to run in parallel. (default 8)
- -c, --checksum Skip based on checksum (if available) & size, not mod-time & size
- --client-cert string Client SSL certificate (PEM) for mutual TLS auth
- --client-key string Client SSL private key (PEM) for mutual TLS auth
- --compare-dest string Include additional server-side path during comparison.
- --config string Config file. (default "$HOME/.config/rclone/rclone.conf")
- --contimeout duration Connect timeout (default 1m0s)
- --copy-dest string Implies --compare-dest but also copies files from path into destination.
- --cpuprofile string Write cpu profile to file
- --delete-after When synchronizing, delete files on destination after transferring (default)
- --delete-before When synchronizing, delete files on destination before transferring
- --delete-during When synchronizing, delete files during transfer
- --delete-excluded Delete files on dest excluded from sync
- --disable string Disable a comma separated list of features. Use help to see a list.
- -n, --dry-run Do a trial run with no permanent changes
- --dump DumpFlags List of items to dump from: headers,bodies,requests,responses,auth,filters,goroutines,openfiles
- --dump-bodies Dump HTTP headers and bodies - may contain sensitive info
- --dump-headers Dump HTTP headers - may contain sensitive info
- --exclude stringArray Exclude files matching pattern
- --exclude-from stringArray Read exclude patterns from file
- --exclude-if-present string Exclude directories if filename is present
- --expect-continue-timeout duration Timeout when using expect / 100-continue in HTTP (default 1s)
- --fast-list Use recursive list if available. Uses more memory but fewer transactions.
- --files-from stringArray Read list of source-file names from file
- -f, --filter stringArray Add a file-filtering rule
- --filter-from stringArray Read filtering patterns from a file
- --ignore-case Ignore case in filters (case insensitive)
- --ignore-case-sync Ignore case when synchronizing
- --ignore-checksum Skip post copy check of checksums.
- --ignore-errors delete even if there are I/O errors
- --ignore-existing Skip all files that exist on destination
- --ignore-size Ignore size when skipping use mod-time or checksum.
- -I, --ignore-times Don't skip files that match size and time - transfer all files
- --immutable Do not modify files. Fail if existing files have been modified.
- --include stringArray Include files matching pattern
- --include-from stringArray Read include patterns from file
- --log-file string Log everything to this file
- --log-format string Comma separated list of log format options (default "date,time")
- --log-level string Log level DEBUG|INFO|NOTICE|ERROR (default "NOTICE")
- --low-level-retries int Number of low level retries to do. (default 10)
- --max-age Duration Only transfer files younger than this in s or suffix ms|s|m|h|d|w|M|y (default off)
- --max-backlog int Maximum number of objects in sync or check backlog. (default 10000)
- --max-delete int When synchronizing, limit the number of deletes (default -1)
- --max-depth int If set limits the recursion depth to this. (default -1)
- --max-duration duration Maximum duration rclone will transfer data for.
- --max-size SizeSuffix Only transfer files smaller than this in k or suffix b|k|M|G (default off)
- --max-stats-groups int Maximum number of stats groups to keep in memory. On max oldest is discarded. (default 1000)
- --max-transfer SizeSuffix Maximum size of data to transfer. (default off)
- --memprofile string Write memory profile to file
- --min-age Duration Only transfer files older than this in s or suffix ms|s|m|h|d|w|M|y (default off)
- --min-size SizeSuffix Only transfer files bigger than this in k or suffix b|k|M|G (default off)
- --modify-window duration Max time diff to be considered the same (default 1ns)
- --multi-thread-cutoff SizeSuffix Use multi-thread downloads for files above this size. (default 250M)
- --multi-thread-streams int Max number of streams to use for multi-thread downloads. (default 4)
- --no-check-certificate Do not verify the server SSL certificate. Insecure.
- --no-check-dest Don't check the destination, copy regardless.
- --no-gzip-encoding Don't set Accept-Encoding: gzip.
- --no-traverse Don't traverse destination file system on copy.
- --no-update-modtime Don't update destination mod-time if files identical.
- --order-by string Instructions on how to order the transfers, eg 'size,descending'
- --password-command SpaceSepList Command for supplying password for encrypted configuration.
- -P, --progress Show progress during transfer.
- -q, --quiet Print as little stuff as possible
- --rc Enable the remote control server.
- --rc-addr string IPaddress:Port or :Port to bind server to. (default "localhost:5572")
- --rc-allow-origin string Set the allowed origin for CORS.
- --rc-baseurl string Prefix for URLs - leave blank for root.
- --rc-cert string SSL PEM key (concatenation of certificate and CA certificate)
- --rc-client-ca string Client certificate authority to verify clients with
- --rc-files string Path to local files to serve on the HTTP server.
- --rc-htpasswd string htpasswd file - if not provided no authentication is done
- --rc-job-expire-duration duration expire finished async jobs older than this value (default 1m0s)
- --rc-job-expire-interval duration interval to check for expired async jobs (default 10s)
- --rc-key string SSL PEM Private key
- --rc-max-header-bytes int Maximum size of request header (default 4096)
- --rc-no-auth Don't require auth for certain methods.
- --rc-pass string Password for authentication.
- --rc-realm string realm for authentication (default "rclone")
- --rc-serve Enable the serving of remote objects.
- --rc-server-read-timeout duration Timeout for server reading data (default 1h0m0s)
- --rc-server-write-timeout duration Timeout for server writing data (default 1h0m0s)
- --rc-user string User name for authentication.
- --rc-web-fetch-url string URL to fetch the releases for webgui. (default "https://api.github.com/repos/rclone/rclone-webui-react/releases/latest")
- --rc-web-gui Launch WebGUI on localhost
- --rc-web-gui-force-update Force update to latest version of web gui
- --rc-web-gui-no-open-browser Don't open the browser automatically
- --rc-web-gui-update Check and update to latest version of web gui
- --retries int Retry operations this many times if they fail (default 3)
- --retries-sleep duration Interval between retrying operations if they fail, e.g 500ms, 60s, 5m. (0 to disable)
- --size-only Skip based on size only, not mod-time or checksum
- --stats duration Interval between printing stats, e.g 500ms, 60s, 5m. (0 to disable) (default 1m0s)
- --stats-file-name-length int Max file name length in stats. 0 for no limit (default 45)
- --stats-log-level string Log level to show --stats output DEBUG|INFO|NOTICE|ERROR (default "INFO")
- --stats-one-line Make the stats fit on one line.
- --stats-one-line-date Enables --stats-one-line and add current date/time prefix.
- --stats-one-line-date-format string Enables --stats-one-line-date and uses custom formatted date. Enclose date string in double quotes ("). See https://golang.org/pkg/time/#Time.Format
- --stats-unit string Show data rate in stats as either 'bits' or 'bytes'/s (default "bytes")
- --streaming-upload-cutoff SizeSuffix Cutoff for switching to chunked upload if file size is unknown. Upload starts after reaching cutoff or when file ends. (default 100k)
- --suffix string Suffix to add to changed files.
- --suffix-keep-extension Preserve the extension when using --suffix.
- --syslog Use Syslog for logging
- --syslog-facility string Facility for syslog, eg KERN,USER,... (default "DAEMON")
- --timeout duration IO idle timeout (default 5m0s)
- --tpslimit float Limit HTTP transactions per second to this.
- --tpslimit-burst int Max burst of transactions for --tpslimit. (default 1)
- --track-renames When synchronizing, track file renames and do a server side move if possible
- --transfers int Number of file transfers to run in parallel. (default 4)
- -u, --update Skip files that are newer on the destination.
- --use-cookies Enable session cookiejar.
- --use-json-log Use json log format.
- --use-mmap Use mmap allocator (see docs).
- --use-server-modtime Use server modified time instead of object metadata
- --user-agent string Set the user-agent to a specified string. The default is rclone/ version (default "rclone/v1.51.0")
- -v, --verbose count Print lots more stuff (repeat for more)
- Backend Flags
- These flags are available for every command. They control the backends
- and may be set in the config file.
- --acd-auth-url string Auth server URL.
- --acd-client-id string Amazon Application Client ID.
- --acd-client-secret string Amazon Application Client Secret.
- --acd-encoding MultiEncoder This sets the encoding for the backend. (default Slash,InvalidUtf8,Dot)
- --acd-templink-threshold SizeSuffix Files >= this size will be downloaded via their tempLink. (default 9G)
- --acd-token-url string Token server url.
- --acd-upload-wait-per-gb Duration Additional time per GB to wait after a failed complete upload to see if it appears. (default 3m0s)
- --alias-remote string Remote or path to alias.
- --azureblob-access-tier string Access tier of blob: hot, cool or archive.
- --azureblob-account string Storage Account Name (leave blank to use SAS URL or Emulator)
- --azureblob-chunk-size SizeSuffix Upload chunk size (<= 100MB). (default 4M)
- --azureblob-encoding MultiEncoder This sets the encoding for the backend. (default Slash,BackSlash,Del,Ctl,RightPeriod,InvalidUtf8)
- --azureblob-endpoint string Endpoint for the service
- --azureblob-key string Storage Account Key (leave blank to use SAS URL or Emulator)
- --azureblob-list-chunk int Size of blob list. (default 5000)
- --azureblob-sas-url string SAS URL for container level access only
- --azureblob-upload-cutoff SizeSuffix Cutoff for switching to chunked upload (<= 256MB). (default 256M)
- --azureblob-use-emulator Uses local storage emulator if provided as 'true' (leave blank if using real azure storage endpoint)
- --b2-account string Account ID or Application Key ID
- --b2-chunk-size SizeSuffix Upload chunk size. Must fit in memory. (default 96M)
- --b2-disable-checksum Disable checksums for large (> upload cutoff) files
- --b2-download-auth-duration Duration Time before the authorization token will expire in s or suffix ms|s|m|h|d. (default 1w)
- --b2-download-url string Custom endpoint for downloads.
- --b2-encoding MultiEncoder This sets the encoding for the backend. (default Slash,BackSlash,Del,Ctl,InvalidUtf8,Dot)
- --b2-endpoint string Endpoint for the service.
- --b2-hard-delete Permanently delete files on remote removal, otherwise hide files.
- --b2-key string Application Key
- --b2-test-mode string A flag string for X-Bz-Test-Mode header for debugging.
- --b2-upload-cutoff SizeSuffix Cutoff for switching to chunked upload. (default 200M)
- --b2-versions Include old versions in directory listings.
- --box-box-config-file string Box App config.json location
- --box-box-sub-type string (default "user")
- --box-client-id string Box App Client Id.
- --box-client-secret string Box App Client Secret
- --box-commit-retries int Max number of times to try committing a multipart file. (default 100)
- --box-encoding MultiEncoder This sets the encoding for the backend. (default Slash,BackSlash,Del,Ctl,RightSpace,InvalidUtf8,Dot)
- --box-upload-cutoff SizeSuffix Cutoff for switching to multipart upload (>= 50MB). (default 50M)
- --cache-chunk-clean-interval Duration How often should the cache perform cleanups of the chunk storage. (default 1m0s)
- --cache-chunk-no-memory Disable the in-memory cache for storing chunks during streaming.
- --cache-chunk-path string Directory to cache chunk files. (default "$HOME/.cache/rclone/cache-backend")
- --cache-chunk-size SizeSuffix The size of a chunk (partial file data). (default 5M)
- --cache-chunk-total-size SizeSuffix The total size that the chunks can take up on the local disk. (default 10G)
- --cache-db-path string Directory to store file structure metadata DB. (default "$HOME/.cache/rclone/cache-backend")
- --cache-db-purge Clear all the cached data for this remote on start.
- --cache-db-wait-time Duration How long to wait for the DB to be available - 0 is unlimited (default 1s)
- --cache-info-age Duration How long to cache file structure information (directory listings, file size, times etc). (default 6h0m0s)
- --cache-plex-insecure string Skip all certificate verifications when connecting to the Plex server
- --cache-plex-password string The password of the Plex user
- --cache-plex-url string The URL of the Plex server
- --cache-plex-username string The username of the Plex user
- --cache-read-retries int How many times to retry a read from a cache storage. (default 10)
- --cache-remote string Remote to cache.
- --cache-rps int Limits the number of requests per second to the source FS (-1 to disable) (default -1)
- --cache-tmp-upload-path string Directory to keep temporary files until they are uploaded.
- --cache-tmp-wait-time Duration How long should files be stored in local cache before being uploaded (default 15s)
- --cache-workers int How many workers should run in parallel to download chunks. (default 4)
- --cache-writes Cache file data on writes through the FS
- --chunker-chunk-size SizeSuffix Files larger than chunk size will be split in chunks. (default 2G)
- --chunker-fail-hard Choose how chunker should handle files with missing or invalid chunks.
- --chunker-hash-type string Choose how chunker handles hash sums. All modes but "none" require metadata. (default "md5")
- --chunker-meta-format string Format of the metadata object or "none". By default "simplejson". (default "simplejson")
- --chunker-name-format string String format of chunk file names. (default "*.rclone_chunk.###")
- --chunker-remote string Remote to chunk/unchunk.
- --chunker-start-from int Minimum valid chunk number. Usually 0 or 1. (default 1)
- -L, --copy-links Follow symlinks and copy the pointed to item.
- --crypt-directory-name-encryption Option to either encrypt directory names or leave them intact. (default true)
- --crypt-filename-encryption string How to encrypt the filenames. (default "standard")
- --crypt-password string Password or pass phrase for encryption.
- --crypt-password2 string Password or pass phrase for salt. Optional but recommended.
- --crypt-remote string Remote to encrypt/decrypt.
- --crypt-show-mapping For all files listed show how the names encrypt.
- --drive-acknowledge-abuse Set to allow files which return cannotDownloadAbusiveFile to be downloaded.
- --drive-allow-import-name-change Allow the filetype to change when uploading Google docs (e.g. file.doc to file.docx). This will confuse sync and reupload every time.
- --drive-alternate-export Use alternate export URLs for google documents export.,
- --drive-auth-owner-only Only consider files owned by the authenticated user.
- --drive-chunk-size SizeSuffix Upload chunk size. Must a power of 2 >= 256k. (default 8M)
- --drive-client-id string Google Application Client Id
- --drive-client-secret string Google Application Client Secret
- --drive-disable-http2 Disable drive using http2 (default true)
- --drive-encoding MultiEncoder This sets the encoding for the backend. (default InvalidUtf8)
- --drive-export-formats string Comma separated list of preferred formats for downloading Google docs. (default "docx,xlsx,pptx,svg")
- --drive-formats string Deprecated: see export_formats
- --drive-impersonate string Impersonate this user when using a service account.
- --drive-import-formats string Comma separated list of preferred formats for uploading Google docs.
- --drive-keep-revision-forever Keep new head revision of each file forever.
- --drive-list-chunk int Size of listing chunk 100-1000. 0 to disable. (default 1000)
- --drive-pacer-burst int Number of API calls to allow without sleeping. (default 100)
- --drive-pacer-min-sleep Duration Minimum time to sleep between API calls. (default 100ms)
- --drive-root-folder-id string ID of the root folder
- --drive-scope string Scope that rclone should use when requesting access from drive.
- --drive-server-side-across-configs Allow server side operations (eg copy) to work across different drive configs.
- --drive-service-account-credentials string Service Account Credentials JSON blob
- --drive-service-account-file string Service Account Credentials JSON file path
- --drive-shared-with-me Only show files that are shared with me.
- --drive-size-as-quota Show sizes as storage quota usage, not actual size.
- --drive-skip-checksum-gphotos Skip MD5 checksum on Google photos and videos only.
- --drive-skip-gdocs Skip google documents in all listings.
- --drive-stop-on-upload-limit Make upload limit errors be fatal
- --drive-team-drive string ID of the Team Drive
- --drive-trashed-only Only show files that are in the trash.
- --drive-upload-cutoff SizeSuffix Cutoff for switching to chunked upload (default 8M)
- --drive-use-created-date Use file created date instead of modified date.,
- --drive-use-shared-date Use date file was shared instead of modified date.
- --drive-use-trash Send files to the trash instead of deleting permanently. (default true)
- --drive-v2-download-min-size SizeSuffix If Object's are greater, use drive v2 API to download. (default off)
- --dropbox-chunk-size SizeSuffix Upload chunk size. (< 150M). (default 48M)
- --dropbox-client-id string Dropbox App Client Id
- --dropbox-client-secret string Dropbox App Client Secret
- --dropbox-encoding MultiEncoder This sets the encoding for the backend. (default Slash,BackSlash,Del,RightSpace,InvalidUtf8,Dot)
- --dropbox-impersonate string Impersonate this user when using a business account.
- --fichier-api-key string Your API Key, get it from https://1fichier.com/console/params.pl
- --fichier-encoding MultiEncoder This sets the encoding for the backend. (default Slash,LtGt,DoubleQuote,SingleQuote,BackQuote,Dollar,BackSlash,Del,Ctl,LeftSpace,RightSpace,InvalidUtf8,Dot)
- --fichier-shared-folder string If you want to download a shared folder, add this parameter
- --ftp-concurrency int Maximum number of FTP simultaneous connections, 0 for unlimited
- --ftp-disable-epsv Disable using EPSV even if server advertises support
- --ftp-encoding MultiEncoder This sets the encoding for the backend. (default Slash,Del,Ctl,RightSpace,Dot)
- --ftp-host string FTP host to connect to
- --ftp-no-check-certificate Do not verify the TLS certificate of the server
- --ftp-pass string FTP password
- --ftp-port string FTP port, leave blank to use default (21)
- --ftp-tls Use FTP over TLS (Implicit)
- --ftp-user string FTP username, leave blank for current username, $USER
- --gcs-bucket-acl string Access Control List for new buckets.
- --gcs-bucket-policy-only Access checks should use bucket-level IAM policies.
- --gcs-client-id string Google Application Client Id
- --gcs-client-secret string Google Application Client Secret
- --gcs-encoding MultiEncoder This sets the encoding for the backend. (default Slash,CrLf,InvalidUtf8,Dot)
- --gcs-location string Location for the newly created buckets.
- --gcs-object-acl string Access Control List for new objects.
- --gcs-project-number string Project number.
- --gcs-service-account-file string Service Account Credentials JSON file path
- --gcs-storage-class string The storage class to use when storing objects in Google Cloud Storage.
- --gphotos-client-id string Google Application Client Id
- --gphotos-client-secret string Google Application Client Secret
- --gphotos-read-only Set to make the Google Photos backend read only.
- --gphotos-read-size Set to read the size of media items.
- --http-headers CommaSepList Set HTTP headers for all transactions
- --http-no-head Don't use HEAD requests to find file sizes in dir listing
- --http-no-slash Set this if the site doesn't end directories with /
- --http-url string URL of http host to connect to
- --hubic-chunk-size SizeSuffix Above this size files will be chunked into a _segments container. (default 5G)
- --hubic-client-id string Hubic Client Id
- --hubic-client-secret string Hubic Client Secret
- --hubic-encoding MultiEncoder This sets the encoding for the backend. (default Slash,InvalidUtf8)
- --hubic-no-chunk Don't chunk files during streaming upload.
- --jottacloud-encoding MultiEncoder This sets the encoding for the backend. (default Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,Del,Ctl,InvalidUtf8,Dot)
- --jottacloud-hard-delete Delete files permanently rather than putting them into the trash.
- --jottacloud-md5-memory-limit SizeSuffix Files bigger than this will be cached on disk to calculate the MD5 if required. (default 10M)
- --jottacloud-unlink Remove existing public link to file/folder with link command rather than creating.
- --jottacloud-upload-resume-limit SizeSuffix Files bigger than this can be resumed if the upload fail's. (default 10M)
- --koofr-encoding MultiEncoder This sets the encoding for the backend. (default Slash,BackSlash,Del,Ctl,InvalidUtf8,Dot)
- --koofr-endpoint string The Koofr API endpoint to use (default "https://app.koofr.net")
- --koofr-mountid string Mount ID of the mount to use. If omitted, the primary mount is used.
- --koofr-password string Your Koofr password for rclone (generate one at https://app.koofr.net/app/admin/preferences/password)
- --koofr-setmtime Does the backend support setting modification time. Set this to false if you use a mount ID that points to a Dropbox or Amazon Drive backend. (default true)
- --koofr-user string Your Koofr user name
- -l, --links Translate symlinks to/from regular files with a '.rclonelink' extension
- --local-case-insensitive Force the filesystem to report itself as case insensitive
- --local-case-sensitive Force the filesystem to report itself as case sensitive.
- --local-encoding MultiEncoder This sets the encoding for the backend. (default Slash,Dot)
- --local-no-check-updated Don't check to see if the files change during upload
- --local-no-unicode-normalization Don't apply unicode normalization to paths and filenames (Deprecated)
- --local-nounc string Disable UNC (long path names) conversion on Windows
- --mailru-check-hash What should copy do if file checksum is mismatched or invalid (default true)
- --mailru-encoding MultiEncoder This sets the encoding for the backend. (default Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,Del,Ctl,InvalidUtf8,Dot)
- --mailru-pass string Password
- --mailru-speedup-enable Skip full upload if there is another file with same data hash. (default true)
- --mailru-speedup-file-patterns string Comma separated list of file name patterns eligible for speedup (put by hash). (default "*.mkv,*.avi,*.mp4,*.mp3,*.zip,*.gz,*.rar,*.pdf")
- --mailru-speedup-max-disk SizeSuffix This option allows you to disable speedup (put by hash) for large files (default 3G)
- --mailru-speedup-max-memory SizeSuffix Files larger than the size given below will always be hashed on disk. (default 32M)
- --mailru-user string User name (usually email)
- --mega-debug Output more debug from Mega.
- --mega-encoding MultiEncoder This sets the encoding for the backend. (default Slash,InvalidUtf8,Dot)
- --mega-hard-delete Delete files permanently rather than putting them into the trash.
- --mega-pass string Password.
- --mega-user string User name
- -x, --one-file-system Don't cross filesystem boundaries (unix/macOS only).
- --onedrive-chunk-size SizeSuffix Chunk size to upload files with - must be multiple of 320k (327,680 bytes). (default 10M)
- --onedrive-client-id string Microsoft App Client Id
- --onedrive-client-secret string Microsoft App Client Secret
- --onedrive-drive-id string The ID of the drive to use
- --onedrive-drive-type string The type of the drive ( personal | business | documentLibrary )
- --onedrive-encoding MultiEncoder This sets the encoding for the backend. (default Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,Hash,Percent,BackSlash,Del,Ctl,LeftSpace,LeftTilde,RightSpace,RightPeriod,InvalidUtf8,Dot)
- --onedrive-expose-onenote-files Set to make OneNote files show up in directory listings.
- --opendrive-chunk-size SizeSuffix Files will be uploaded in chunks this size. (default 10M)
- --opendrive-encoding MultiEncoder This sets the encoding for the backend. (default Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,LeftSpace,LeftCrLfHtVt,RightSpace,RightCrLfHtVt,InvalidUtf8,Dot)
- --opendrive-password string Password.
- --opendrive-username string Username
- --pcloud-client-id string Pcloud App Client Id
- --pcloud-client-secret string Pcloud App Client Secret
- --pcloud-encoding MultiEncoder This sets the encoding for the backend. (default Slash,BackSlash,Del,Ctl,InvalidUtf8,Dot)
- --premiumizeme-encoding MultiEncoder This sets the encoding for the backend. (default Slash,DoubleQuote,BackSlash,Del,Ctl,InvalidUtf8,Dot)
- --putio-encoding MultiEncoder This sets the encoding for the backend. (default Slash,BackSlash,Del,Ctl,InvalidUtf8,Dot)
- --qingstor-access-key-id string QingStor Access Key ID
- --qingstor-chunk-size SizeSuffix Chunk size to use for uploading. (default 4M)
- --qingstor-connection-retries int Number of connection retries. (default 3)
- --qingstor-encoding MultiEncoder This sets the encoding for the backend. (default Slash,Ctl,InvalidUtf8)
- --qingstor-endpoint string Enter a endpoint URL to connection QingStor API.
- --qingstor-env-auth Get QingStor credentials from runtime. Only applies if access_key_id and secret_access_key is blank.
- --qingstor-secret-access-key string QingStor Secret Access Key (password)
- --qingstor-upload-concurrency int Concurrency for multipart uploads. (default 1)
- --qingstor-upload-cutoff SizeSuffix Cutoff for switching to chunked upload (default 200M)
- --qingstor-zone string Zone to connect to.
- --s3-access-key-id string AWS Access Key ID.
- --s3-acl string Canned ACL used when creating buckets and storing or copying objects.
- --s3-bucket-acl string Canned ACL used when creating buckets.
- --s3-chunk-size SizeSuffix Chunk size to use for uploading. (default 5M)
- --s3-copy-cutoff SizeSuffix Cutoff for switching to multipart copy (default 5G)
- --s3-disable-checksum Don't store MD5 checksum with object metadata
- --s3-encoding MultiEncoder This sets the encoding for the backend. (default Slash,InvalidUtf8,Dot)
- --s3-endpoint string Endpoint for S3 API.
- --s3-env-auth Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars).
- --s3-force-path-style If true use path style access if false use virtual hosted style. (default true)
- --s3-leave-parts-on-error If true avoid calling abort upload on a failure, leaving all successfully uploaded parts on S3 for manual recovery.
- --s3-list-chunk int Size of listing chunk (response list for each ListObject S3 request). (default 1000)
- --s3-location-constraint string Location constraint - must be set to match the Region.
- --s3-provider string Choose your S3 provider.
- --s3-region string Region to connect to.
- --s3-secret-access-key string AWS Secret Access Key (password)
- --s3-server-side-encryption string The server-side encryption algorithm used when storing this object in S3.
- --s3-session-token string An AWS session token
- --s3-sse-kms-key-id string If using KMS ID you must provide the ARN of Key.
- --s3-storage-class string The storage class to use when storing new objects in S3.
- --s3-upload-concurrency int Concurrency for multipart uploads. (default 4)
- --s3-upload-cutoff SizeSuffix Cutoff for switching to chunked upload (default 200M)
- --s3-use-accelerate-endpoint If true use the AWS S3 accelerated endpoint.
- --s3-v2-auth If true use v2 authentication.
- --sftp-ask-password Allow asking for SFTP password when needed.
- --sftp-disable-hashcheck Disable the execution of SSH commands to determine if remote file hashing is available.
- --sftp-host string SSH host to connect to
- --sftp-key-file string Path to PEM-encoded private key file, leave blank or set key-use-agent to use ssh-agent.
- --sftp-key-file-pass string The passphrase to decrypt the PEM-encoded private key file.
- --sftp-key-use-agent When set forces the usage of the ssh-agent.
- --sftp-md5sum-command string The command used to read md5 hashes. Leave blank for autodetect.
- --sftp-pass string SSH password, leave blank to use ssh-agent.
- --sftp-path-override string Override path used by SSH connection.
- --sftp-port string SSH port, leave blank to use default (22)
- --sftp-set-modtime Set the modified time on the remote if set. (default true)
- --sftp-sha1sum-command string The command used to read sha1 hashes. Leave blank for autodetect.
- --sftp-skip-links Set to skip any symlinks and any other non regular files.
- --sftp-use-insecure-cipher Enable the use of insecure ciphers and key exchange methods.
- --sftp-user string SSH username, leave blank for current username, ncw
- --sharefile-chunk-size SizeSuffix Upload chunk size. Must a power of 2 >= 256k. (default 64M)
- --sharefile-encoding MultiEncoder This sets the encoding for the backend. (default Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,Ctl,LeftSpace,LeftPeriod,RightSpace,RightPeriod,InvalidUtf8,Dot)
- --sharefile-endpoint string Endpoint for API calls.
- --sharefile-root-folder-id string ID of the root folder
- --sharefile-upload-cutoff SizeSuffix Cutoff for switching to multipart upload. (default 128M)
- --skip-links Don't warn about skipped symlinks.
- --sugarsync-access-key-id string Sugarsync Access Key ID.
- --sugarsync-app-id string Sugarsync App ID.
- --sugarsync-authorization string Sugarsync authorization
- --sugarsync-authorization-expiry string Sugarsync authorization expiry
- --sugarsync-deleted-id string Sugarsync deleted folder id
- --sugarsync-encoding MultiEncoder This sets the encoding for the backend. (default Slash,Ctl,InvalidUtf8,Dot)
- --sugarsync-hard-delete Permanently delete files if true
- --sugarsync-private-access-key string Sugarsync Private Access Key
- --sugarsync-refresh-token string Sugarsync refresh token
- --sugarsync-root-id string Sugarsync root id
- --sugarsync-user string Sugarsync user
- --swift-application-credential-id string Application Credential ID (OS_APPLICATION_CREDENTIAL_ID)
- --swift-application-credential-name string Application Credential Name (OS_APPLICATION_CREDENTIAL_NAME)
- --swift-application-credential-secret string Application Credential Secret (OS_APPLICATION_CREDENTIAL_SECRET)
- --swift-auth string Authentication URL for server (OS_AUTH_URL).
- --swift-auth-token string Auth Token from alternate authentication - optional (OS_AUTH_TOKEN)
- --swift-auth-version int AuthVersion - optional - set to (1,2,3) if your auth URL has no version (ST_AUTH_VERSION)
- --swift-chunk-size SizeSuffix Above this size files will be chunked into a _segments container. (default 5G)
- --swift-domain string User domain - optional (v3 auth) (OS_USER_DOMAIN_NAME)
- --swift-encoding MultiEncoder This sets the encoding for the backend. (default Slash,InvalidUtf8)
- --swift-endpoint-type string Endpoint type to choose from the service catalogue (OS_ENDPOINT_TYPE) (default "public")
- --swift-env-auth Get swift credentials from environment variables in standard OpenStack form.
- --swift-key string API key or password (OS_PASSWORD).
- --swift-no-chunk Don't chunk files during streaming upload.
- --swift-region string Region name - optional (OS_REGION_NAME)
- --swift-storage-policy string The storage policy to use when creating a new container
- --swift-storage-url string Storage URL - optional (OS_STORAGE_URL)
- --swift-tenant string Tenant name - optional for v1 auth, this or tenant_id required otherwise (OS_TENANT_NAME or OS_PROJECT_NAME)
- --swift-tenant-domain string Tenant domain - optional (v3 auth) (OS_PROJECT_DOMAIN_NAME)
- --swift-tenant-id string Tenant ID - optional for v1 auth, this or tenant required otherwise (OS_TENANT_ID)
- --swift-user string User name to log in (OS_USERNAME).
- --swift-user-id string User ID to log in - optional - most swift systems use user and leave this blank (v3 auth) (OS_USER_ID).
- --union-remotes string List of space separated remotes.
- --webdav-bearer-token string Bearer token instead of user/pass (eg a Macaroon)
- --webdav-bearer-token-command string Command to run to get a bearer token
- --webdav-pass string Password.
- --webdav-url string URL of http host to connect to
- --webdav-user string User name
- --webdav-vendor string Name of the Webdav site/service/software you are using
- --yandex-client-id string Yandex Client Id
- --yandex-client-secret string Yandex Client Secret
- --yandex-encoding MultiEncoder This sets the encoding for the backend. (default Slash,Del,Ctl,InvalidUtf8,Dot)
- --yandex-unlink Remove existing public link to file/folder with link command rather than creating.
- 1Fichier
- This is a backend for the 1ficher cloud storage service. Note that a
- Premium subscription is required to use the API.
- Paths are specified as remote:path
- Paths may be as deep as required, eg remote:directory/subdirectory.
- The initial setup for 1Fichier involves getting the API key from the
- website which you need to do in your browser.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- [snip]
- XX / 1Fichier
- \ "fichier"
- [snip]
- Storage> fichier
- ** See help for fichier backend at: https://rclone.org/fichier/ **
- Your API Key, get it from https://1fichier.com/console/params.pl
- Enter a string value. Press Enter for the default ("").
- api_key> example_key
- Edit advanced config? (y/n)
- y) Yes
- n) No
- y/n>
- Remote config
- --------------------
- [remote]
- type = fichier
- api_key = example_key
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Once configured you can then use rclone like this,
- List directories in top level of your 1Fichier account
- rclone lsd remote:
- List all the files in your 1Fichier account
- rclone ls remote:
- To copy a local directory to a 1Fichier directory called backup
- rclone copy /home/source remote:backup
- Modified time and hashes
- 1Fichier does not support modification times. It supports the Whirlpool
- hash algorithm.
- Duplicated files
- 1Fichier can have two files with exactly the same name and path (unlike
- a normal file system).
- Duplicated files cause problems with the syncing and you will see
- messages in the log about duplicates.
- Restricted filename characters
- In addition to the default restricted characters set the following
- characters are also replaced:
- Character Value Replacement
- ----------- ------- -------------
- \ 0x5C \
- < 0x3C <
- > 0x3E >
- " 0x22 "
- $ 0x24 $
- ` 0x60 `
- ’ 0x27 '
- File names can also not start or end with the following characters.
- These only get replaced if they are first or last character in the name:
- Character Value Replacement
- ----------- ------- -------------
- SP 0x20 ␠
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Standard Options
- Here are the standard options specific to fichier (1Fichier).
- –fichier-api-key
- Your API Key, get it from https://1fichier.com/console/params.pl
- - Config: api_key
- - Env Var: RCLONE_FICHIER_API_KEY
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to fichier (1Fichier).
- –fichier-shared-folder
- If you want to download a shared folder, add this parameter
- - Config: shared_folder
- - Env Var: RCLONE_FICHIER_SHARED_FOLDER
- - Type: string
- - Default: ""
- –fichier-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_FICHIER_ENCODING
- - Type: MultiEncoder
- - Default:
- Slash,LtGt,DoubleQuote,SingleQuote,BackQuote,Dollar,BackSlash,Del,Ctl,LeftSpace,RightSpace,InvalidUtf8,Dot
- Alias
- The alias remote provides a new name for another remote.
- Paths may be as deep as required or a local path, eg
- remote:directory/subdirectory or /directory/subdirectory.
- During the initial setup with rclone config you will specify the target
- remote. The target remote can either be a local path or another remote.
- Subfolders can be used in target remote. Assume a alias remote named
- backup with the target mydrive:private/backup. Invoking
- rclone mkdir backup:desktop is exactly the same as invoking
- rclone mkdir mydrive:private/backup/desktop.
- There will be no special handling of paths containing .. segments.
- Invoking rclone mkdir backup:../desktop is exactly the same as invoking
- rclone mkdir mydrive:private/backup/../desktop. The empty path is not
- allowed as a remote. To alias the current directory use . instead.
- Here is an example of how to make a alias called remote for local
- folder. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Alias for an existing remote
- \ "alias"
- [snip]
- Storage> alias
- Remote or path to alias.
- Can be "myremote:path/to/dir", "myremote:bucket", "myremote:" or "/local/path".
- remote> /mnt/storage/backup
- Remote config
- --------------------
- [remote]
- remote = /mnt/storage/backup
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Current remotes:
- Name Type
- ==== ====
- remote alias
- e) Edit existing remote
- n) New remote
- d) Delete remote
- r) Rename remote
- c) Copy remote
- s) Set configuration password
- q) Quit config
- e/n/d/r/c/s/q> q
- Once configured you can then use rclone like this,
- List directories in top level in /mnt/storage/backup
- rclone lsd remote:
- List all the files in /mnt/storage/backup
- rclone ls remote:
- Copy another local directory to the alias directory called source
- rclone copy /home/source remote:source
- Standard Options
- Here are the standard options specific to alias (Alias for an existing
- remote).
- –alias-remote
- Remote or path to alias. Can be “myremote:path/to/dir”,
- “myremote:bucket”, “myremote:” or “/local/path”.
- - Config: remote
- - Env Var: RCLONE_ALIAS_REMOTE
- - Type: string
- - Default: ""
- Amazon Drive
- Amazon Drive, formerly known as Amazon Cloud Drive, is a cloud storage
- service run by Amazon for consumers.
- Status
- IMPORTANT: rclone supports Amazon Drive only if you have your own set of
- API keys. Unfortunately the Amazon Drive developer program is now closed
- to new entries so if you don’t already have your own set of keys you
- will not be able to use rclone with Amazon Drive.
- For the history on why rclone no longer has a set of Amazon Drive API
- keys see the forum.
- If you happen to know anyone who works at Amazon then please ask them to
- re-instate rclone into the Amazon Drive developer program - thanks!
- Setup
- The initial setup for Amazon Drive involves getting a token from Amazon
- which you need to do in your browser. rclone config walks you through
- it.
- The configuration process for Amazon Drive may involve using an oauth
- proxy. This is used to keep the Amazon credentials out of the source
- code. The proxy runs in Google’s very secure App Engine environment and
- doesn’t store any credentials which pass through it.
- Since rclone doesn’t currently have its own Amazon Drive credentials so
- you will either need to have your own client_id and client_secret with
- Amazon Drive, or use a a third party ouath proxy in which case you will
- need to enter client_id, client_secret, auth_url and token_url.
- Note also if you are not using Amazon’s auth_url and token_url, (ie you
- filled in something for those) then if setting up on a remote machine
- you can only use the copying the config method of configuration -
- rclone authorize will not work.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- r) Rename remote
- c) Copy remote
- s) Set configuration password
- q) Quit config
- n/r/c/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Amazon Drive
- \ "amazon cloud drive"
- [snip]
- Storage> amazon cloud drive
- Amazon Application Client Id - required.
- client_id> your client ID goes here
- Amazon Application Client Secret - required.
- client_secret> your client secret goes here
- Auth server URL - leave blank to use Amazon's.
- auth_url> Optional auth URL
- Token server url - leave blank to use Amazon's.
- token_url> Optional token URL
- Remote config
- Make sure your Redirect URL is set to "http://127.0.0.1:53682/" in your custom config.
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine
- y) Yes
- n) No
- y/n> y
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- --------------------
- [remote]
- client_id = your client ID goes here
- client_secret = your client secret goes here
- auth_url = Optional auth URL
- token_url = Optional token URL
- token = {"access_token":"xxxxxxxxxxxxxxxxxxxxxxx","token_type":"bearer","refresh_token":"xxxxxxxxxxxxxxxxxx","expiry":"2015-09-06T16:07:39.658438471+01:00"}
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- See the remote setup docs for how to set it up on a machine with no
- Internet browser available.
- Note that rclone runs a webserver on your local machine to collect the
- token as returned from Amazon. This only runs from the moment it opens
- your browser to the moment you get back the verification code. This is
- on http://127.0.0.1:53682/ and this it may require you to unblock it
- temporarily if you are running a host firewall.
- Once configured you can then use rclone like this,
- List directories in top level of your Amazon Drive
- rclone lsd remote:
- List all the files in your Amazon Drive
- rclone ls remote:
- To copy a local directory to an Amazon Drive directory called backup
- rclone copy /home/source remote:backup
- Modified time and MD5SUMs
- Amazon Drive doesn’t allow modification times to be changed via the API
- so these won’t be accurate or used for syncing.
- It does store MD5SUMs so for a more accurate sync, you can use the
- --checksum flag.
- Restricted filename characters
- Character Value Replacement
- ----------- ------- -------------
- NUL 0x00 ␀
- / 0x2F /
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Deleting files
- Any files you delete with rclone will end up in the trash. Amazon don’t
- provide an API to permanently delete files, nor to empty the trash, so
- you will have to do that with one of Amazon’s apps or via the Amazon
- Drive website. As of November 17, 2016, files are automatically deleted
- by Amazon from the trash after 30 days.
- Using with non .com Amazon accounts
- Let’s say you usually use amazon.co.uk. When you authenticate with
- rclone it will take you to an amazon.com page to log in. Your
- amazon.co.uk email and password should work here just fine.
- Standard Options
- Here are the standard options specific to amazon cloud drive (Amazon
- Drive).
- –acd-client-id
- Amazon Application Client ID.
- - Config: client_id
- - Env Var: RCLONE_ACD_CLIENT_ID
- - Type: string
- - Default: ""
- –acd-client-secret
- Amazon Application Client Secret.
- - Config: client_secret
- - Env Var: RCLONE_ACD_CLIENT_SECRET
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to amazon cloud drive (Amazon
- Drive).
- –acd-auth-url
- Auth server URL. Leave blank to use Amazon’s.
- - Config: auth_url
- - Env Var: RCLONE_ACD_AUTH_URL
- - Type: string
- - Default: ""
- –acd-token-url
- Token server url. leave blank to use Amazon’s.
- - Config: token_url
- - Env Var: RCLONE_ACD_TOKEN_URL
- - Type: string
- - Default: ""
- –acd-checkpoint
- Checkpoint for internal polling (debug).
- - Config: checkpoint
- - Env Var: RCLONE_ACD_CHECKPOINT
- - Type: string
- - Default: ""
- –acd-upload-wait-per-gb
- Additional time per GB to wait after a failed complete upload to see if
- it appears.
- Sometimes Amazon Drive gives an error when a file has been fully
- uploaded but the file appears anyway after a little while. This happens
- sometimes for files over 1GB in size and nearly every time for files
- bigger than 10GB. This parameter controls the time rclone waits for the
- file to appear.
- The default value for this parameter is 3 minutes per GB, so by default
- it will wait 3 minutes for every GB uploaded to see if the file appears.
- You can disable this feature by setting it to 0. This may cause conflict
- errors as rclone retries the failed upload but the file will most likely
- appear correctly eventually.
- These values were determined empirically by observing lots of uploads of
- big files for a range of file sizes.
- Upload with the “-v” flag to see more info about what rclone is doing in
- this situation.
- - Config: upload_wait_per_gb
- - Env Var: RCLONE_ACD_UPLOAD_WAIT_PER_GB
- - Type: Duration
- - Default: 3m0s
- –acd-templink-threshold
- Files >= this size will be downloaded via their tempLink.
- Files this size or more will be downloaded via their “tempLink”. This is
- to work around a problem with Amazon Drive which blocks downloads of
- files bigger than about 10GB. The default for this is 9GB which
- shouldn’t need to be changed.
- To download files above this threshold, rclone requests a “tempLink”
- which downloads the file through a temporary URL directly from the
- underlying S3 storage.
- - Config: templink_threshold
- - Env Var: RCLONE_ACD_TEMPLINK_THRESHOLD
- - Type: SizeSuffix
- - Default: 9G
- –acd-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_ACD_ENCODING
- - Type: MultiEncoder
- - Default: Slash,InvalidUtf8,Dot
- Limitations
- Note that Amazon Drive is case insensitive so you can’t have a file
- called “Hello.doc” and one called “hello.doc”.
- Amazon Drive has rate limiting so you may notice errors in the sync (429
- errors). rclone will automatically retry the sync up to 3 times by
- default (see --retries flag) which should hopefully work around this
- problem.
- Amazon Drive has an internal limit of file sizes that can be uploaded to
- the service. This limit is not officially published, but all files
- larger than this will fail.
- At the time of writing (Jan 2016) is in the area of 50GB per file. This
- means that larger files are likely to fail.
- Unfortunately there is no way for rclone to see that this failure is
- because of file size, so it will retry the operation, as any other
- failure. To avoid this problem, use --max-size 50000M option to limit
- the maximum size of uploaded files. Note that --max-size does not split
- files into segments, it only ignores files over this size.
- Amazon S3 Storage Providers
- The S3 backend can be used with a number of different providers:
- - AWS S3
- - Alibaba Cloud (Aliyun) Object Storage System (OSS)
- - Ceph
- - DigitalOcean Spaces
- - Dreamhost
- - IBM COS S3
- - Minio
- - Scaleway
- - Wasabi
- Paths are specified as remote:bucket (or remote: for the lsd command.)
- You may put subdirectories in too, eg remote:bucket/path/to/dir.
- Once you have made a remote (see the provider specific section above)
- you can use it like this:
- See all buckets
- rclone lsd remote:
- Make a new bucket
- rclone mkdir remote:bucket
- List the contents of a bucket
- rclone ls remote:bucket
- Sync /home/local/directory to the remote bucket, deleting any excess
- files in the bucket.
- rclone sync /home/local/directory remote:bucket
- AWS S3
- Here is an example of making an s3 configuration. First run
- rclone config
- This will guide you through an interactive setup process.
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Amazon S3 Compliant Storage Providers (AWS, Ceph, Dreamhost, IBM COS, Minio)
- \ "s3"
- [snip]
- Storage> s3
- Choose your S3 provider.
- Choose a number from below, or type in your own value
- 1 / Amazon Web Services (AWS) S3
- \ "AWS"
- 2 / Ceph Object Storage
- \ "Ceph"
- 3 / Digital Ocean Spaces
- \ "DigitalOcean"
- 4 / Dreamhost DreamObjects
- \ "Dreamhost"
- 5 / IBM COS S3
- \ "IBMCOS"
- 6 / Minio Object Storage
- \ "Minio"
- 7 / Wasabi Object Storage
- \ "Wasabi"
- 8 / Any other S3 compatible provider
- \ "Other"
- provider> 1
- Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars). Only applies if access_key_id and secret_access_key is blank.
- Choose a number from below, or type in your own value
- 1 / Enter AWS credentials in the next step
- \ "false"
- 2 / Get AWS credentials from the environment (env vars or IAM)
- \ "true"
- env_auth> 1
- AWS Access Key ID - leave blank for anonymous access or runtime credentials.
- access_key_id> XXX
- AWS Secret Access Key (password) - leave blank for anonymous access or runtime credentials.
- secret_access_key> YYY
- Region to connect to.
- Choose a number from below, or type in your own value
- / The default endpoint - a good choice if you are unsure.
- 1 | US Region, Northern Virginia or Pacific Northwest.
- | Leave location constraint empty.
- \ "us-east-1"
- / US East (Ohio) Region
- 2 | Needs location constraint us-east-2.
- \ "us-east-2"
- / US West (Oregon) Region
- 3 | Needs location constraint us-west-2.
- \ "us-west-2"
- / US West (Northern California) Region
- 4 | Needs location constraint us-west-1.
- \ "us-west-1"
- / Canada (Central) Region
- 5 | Needs location constraint ca-central-1.
- \ "ca-central-1"
- / EU (Ireland) Region
- 6 | Needs location constraint EU or eu-west-1.
- \ "eu-west-1"
- / EU (London) Region
- 7 | Needs location constraint eu-west-2.
- \ "eu-west-2"
- / EU (Frankfurt) Region
- 8 | Needs location constraint eu-central-1.
- \ "eu-central-1"
- / Asia Pacific (Singapore) Region
- 9 | Needs location constraint ap-southeast-1.
- \ "ap-southeast-1"
- / Asia Pacific (Sydney) Region
- 10 | Needs location constraint ap-southeast-2.
- \ "ap-southeast-2"
- / Asia Pacific (Tokyo) Region
- 11 | Needs location constraint ap-northeast-1.
- \ "ap-northeast-1"
- / Asia Pacific (Seoul)
- 12 | Needs location constraint ap-northeast-2.
- \ "ap-northeast-2"
- / Asia Pacific (Mumbai)
- 13 | Needs location constraint ap-south-1.
- \ "ap-south-1"
- / Asia Patific (Hong Kong) Region
- 14 | Needs location constraint ap-east-1.
- \ "ap-east-1"
- / South America (Sao Paulo) Region
- 15 | Needs location constraint sa-east-1.
- \ "sa-east-1"
- region> 1
- Endpoint for S3 API.
- Leave blank if using AWS to use the default endpoint for the region.
- endpoint>
- Location constraint - must be set to match the Region. Used when creating buckets only.
- Choose a number from below, or type in your own value
- 1 / Empty for US Region, Northern Virginia or Pacific Northwest.
- \ ""
- 2 / US East (Ohio) Region.
- \ "us-east-2"
- 3 / US West (Oregon) Region.
- \ "us-west-2"
- 4 / US West (Northern California) Region.
- \ "us-west-1"
- 5 / Canada (Central) Region.
- \ "ca-central-1"
- 6 / EU (Ireland) Region.
- \ "eu-west-1"
- 7 / EU (London) Region.
- \ "eu-west-2"
- 8 / EU Region.
- \ "EU"
- 9 / Asia Pacific (Singapore) Region.
- \ "ap-southeast-1"
- 10 / Asia Pacific (Sydney) Region.
- \ "ap-southeast-2"
- 11 / Asia Pacific (Tokyo) Region.
- \ "ap-northeast-1"
- 12 / Asia Pacific (Seoul)
- \ "ap-northeast-2"
- 13 / Asia Pacific (Mumbai)
- \ "ap-south-1"
- 14 / Asia Pacific (Hong Kong)
- \ "ap-east-1"
- 15 / South America (Sao Paulo) Region.
- \ "sa-east-1"
- location_constraint> 1
- Canned ACL used when creating buckets and/or storing objects in S3.
- For more info visit https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl
- Choose a number from below, or type in your own value
- 1 / Owner gets FULL_CONTROL. No one else has access rights (default).
- \ "private"
- 2 / Owner gets FULL_CONTROL. The AllUsers group gets READ access.
- \ "public-read"
- / Owner gets FULL_CONTROL. The AllUsers group gets READ and WRITE access.
- 3 | Granting this on a bucket is generally not recommended.
- \ "public-read-write"
- 4 / Owner gets FULL_CONTROL. The AuthenticatedUsers group gets READ access.
- \ "authenticated-read"
- / Object owner gets FULL_CONTROL. Bucket owner gets READ access.
- 5 | If you specify this canned ACL when creating a bucket, Amazon S3 ignores it.
- \ "bucket-owner-read"
- / Both the object owner and the bucket owner get FULL_CONTROL over the object.
- 6 | If you specify this canned ACL when creating a bucket, Amazon S3 ignores it.
- \ "bucket-owner-full-control"
- acl> 1
- The server-side encryption algorithm used when storing this object in S3.
- Choose a number from below, or type in your own value
- 1 / None
- \ ""
- 2 / AES256
- \ "AES256"
- server_side_encryption> 1
- The storage class to use when storing objects in S3.
- Choose a number from below, or type in your own value
- 1 / Default
- \ ""
- 2 / Standard storage class
- \ "STANDARD"
- 3 / Reduced redundancy storage class
- \ "REDUCED_REDUNDANCY"
- 4 / Standard Infrequent Access storage class
- \ "STANDARD_IA"
- 5 / One Zone Infrequent Access storage class
- \ "ONEZONE_IA"
- 6 / Glacier storage class
- \ "GLACIER"
- 7 / Glacier Deep Archive storage class
- \ "DEEP_ARCHIVE"
- 8 / Intelligent-Tiering storage class
- \ "INTELLIGENT_TIERING"
- storage_class> 1
- Remote config
- --------------------
- [remote]
- type = s3
- provider = AWS
- env_auth = false
- access_key_id = XXX
- secret_access_key = YYY
- region = us-east-1
- endpoint =
- location_constraint =
- acl = private
- server_side_encryption =
- storage_class =
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d>
- –fast-list
- This remote supports --fast-list which allows you to use fewer
- transactions in exchange for more memory. See the rclone docs for more
- details.
- –update and –use-server-modtime
- As noted below, the modified time is stored on metadata on the object.
- It is used by default for all operations that require checking the time
- a file was last updated. It allows rclone to treat the remote more like
- a true filesystem, but it is inefficient because it requires an extra
- API call to retrieve the metadata.
- For many operations, the time the object was last uploaded to the remote
- is sufficient to determine if it is “dirty”. By using --update along
- with --use-server-modtime, you can avoid the extra API call and simply
- upload files whose local modtime is newer than the time it was last
- uploaded.
- Modified time
- The modified time is stored as metadata on the object as
- X-Amz-Meta-Mtime as floating point since the epoch accurate to 1 ns.
- If the modification time needs to be updated rclone will attempt to
- perform a server side copy to update the modification if the object can
- be copied in a single part. In the case the object is larger than 5Gb or
- is in Glacier or Glacier Deep Archive storage the object will be
- uploaded rather than copied.
- Restricted filename characters
- S3 allows any valid UTF-8 string as a key.
- Invalid UTF-8 bytes will be replaced, as they can’t be used in XML.
- The following characters are replaced since these are problematic when
- dealing with the REST API:
- Character Value Replacement
- ----------- ------- -------------
- NUL 0x00 ␀
- / 0x2F /
- The encoding will also encode these file names as they don’t seem to
- work with the SDK properly:
- File name Replacement
- ----------- -------------
- . .
- .. ..
- Multipart uploads
- rclone supports multipart uploads with S3 which means that it can upload
- files bigger than 5GB.
- Note that files uploaded _both_ with multipart upload _and_ through
- crypt remotes do not have MD5 sums.
- rclone switches from single part uploads to multipart uploads at the
- point specified by --s3-upload-cutoff. This can be a maximum of 5GB and
- a minimum of 0 (ie always upload multipart files).
- The chunk sizes used in the multipart upload are specified by
- --s3-chunk-size and the number of chunks uploaded concurrently is
- specified by --s3-upload-concurrency.
- Multipart uploads will use --transfers * --s3-upload-concurrency *
- --s3-chunk-size extra memory. Single part uploads to not use extra
- memory.
- Single part transfers can be faster than multipart transfers or slower
- depending on your latency from S3 - the more latency, the more likely
- single part transfers will be faster.
- Increasing --s3-upload-concurrency will increase throughput (8 would be
- a sensible value) and increasing --s3-chunk-size also increases
- throughput (16M would be sensible). Increasing either of these will use
- more memory. The default values are high enough to gain most of the
- possible performance without using too much memory.
- Buckets and Regions
- With Amazon S3 you can list buckets (rclone lsd) using any region, but
- you can only access the content of a bucket from the region it was
- created in. If you attempt to access a bucket from the wrong region, you
- will get an error, incorrect region, the bucket is not in 'XXX' region.
- Authentication
- There are a number of ways to supply rclone with a set of AWS
- credentials, with and without using the environment.
- The different authentication methods are tried in this order:
- - Directly in the rclone configuration file (env_auth = false in the
- config file):
- - access_key_id and secret_access_key are required.
- - session_token can be optionally set when using AWS STS.
- - Runtime configuration (env_auth = true in the config file):
- - Export the following environment variables before running
- rclone:
- - Access Key ID: AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY
- - Secret Access Key: AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY
- - Session Token: AWS_SESSION_TOKEN (optional)
- - Or, use a named profile:
- - Profile files are standard files used by AWS CLI tools
- - By default it will use the profile in your home directory
- (eg ~/.aws/credentials on unix based systems) file and the
- “default” profile, to change set these environment
- variables:
- - AWS_SHARED_CREDENTIALS_FILE to control which file.
- - AWS_PROFILE to control which profile to use.
- - Or, run rclone in an ECS task with an IAM role (AWS only).
- - Or, run rclone on an EC2 instance with an IAM role (AWS only).
- - Or, run rclone in an EKS pod with an IAM role that is associated
- with a service account (AWS only).
- If none of these option actually end up providing rclone with AWS
- credentials then S3 interaction will be non-authenticated (see below).
- S3 Permissions
- When using the sync subcommand of rclone the following minimum
- permissions are required to be available on the bucket being written to:
- - ListBucket
- - DeleteObject
- - GetObject
- - PutObject
- - PutObjectACL
- When using the lsd subcommand, the ListAllMyBuckets permission is
- required.
- Example policy:
- {
- "Version": "2012-10-17",
- "Statement": [
- {
- "Effect": "Allow",
- "Principal": {
- "AWS": "arn:aws:iam::USER_SID:user/USER_NAME"
- },
- "Action": [
- "s3:ListBucket",
- "s3:DeleteObject",
- "s3:GetObject",
- "s3:PutObject",
- "s3:PutObjectAcl"
- ],
- "Resource": [
- "arn:aws:s3:::BUCKET_NAME/*",
- "arn:aws:s3:::BUCKET_NAME"
- ]
- },
- {
- "Effect": "Allow",
- "Action": "s3:ListAllMyBuckets",
- "Resource": "arn:aws:s3:::*"
- }
- ]
- }
- Notes on above:
- 1. This is a policy that can be used when creating bucket. It assumes
- that USER_NAME has been created.
- 2. The Resource entry must include both resource ARNs, as one implies
- the bucket and the other implies the bucket’s objects.
- For reference, here’s an Ansible script that will generate one or more
- buckets that will work with rclone sync.
- Key Management System (KMS)
- If you are using server side encryption with KMS then you will find you
- can’t transfer small objects. As a work-around you can use the
- --ignore-checksum flag.
- A proper fix is being worked on in issue #1824.
- Glacier and Glacier Deep Archive
- You can upload objects using the glacier storage class or transition
- them to glacier using a lifecycle policy. The bucket can still be synced
- or copied into normally, but if rclone tries to access data from the
- glacier storage class you will see an error like below.
- 2017/09/11 19:07:43 Failed to sync: failed to open source object: Object in GLACIER, restore first: path/to/file
- In this case you need to restore the object(s) in question before using
- rclone.
- Note that rclone only speaks the S3 API it does not speak the Glacier
- Vault API, so rclone cannot directly access Glacier Vaults.
- Standard Options
- Here are the standard options specific to s3 (Amazon S3 Compliant
- Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS,
- Minio, etc)).
- –s3-provider
- Choose your S3 provider.
- - Config: provider
- - Env Var: RCLONE_S3_PROVIDER
- - Type: string
- - Default: ""
- - Examples:
- - “AWS”
- - Amazon Web Services (AWS) S3
- - “Alibaba”
- - Alibaba Cloud Object Storage System (OSS) formerly Aliyun
- - “Ceph”
- - Ceph Object Storage
- - “DigitalOcean”
- - Digital Ocean Spaces
- - “Dreamhost”
- - Dreamhost DreamObjects
- - “IBMCOS”
- - IBM COS S3
- - “Minio”
- - Minio Object Storage
- - “Netease”
- - Netease Object Storage (NOS)
- - “Wasabi”
- - Wasabi Object Storage
- - “Other”
- - Any other S3 compatible provider
- –s3-env-auth
- Get AWS credentials from runtime (environment variables or EC2/ECS meta
- data if no env vars). Only applies if access_key_id and
- secret_access_key is blank.
- - Config: env_auth
- - Env Var: RCLONE_S3_ENV_AUTH
- - Type: bool
- - Default: false
- - Examples:
- - “false”
- - Enter AWS credentials in the next step
- - “true”
- - Get AWS credentials from the environment (env vars or IAM)
- –s3-access-key-id
- AWS Access Key ID. Leave blank for anonymous access or runtime
- credentials.
- - Config: access_key_id
- - Env Var: RCLONE_S3_ACCESS_KEY_ID
- - Type: string
- - Default: ""
- –s3-secret-access-key
- AWS Secret Access Key (password) Leave blank for anonymous access or
- runtime credentials.
- - Config: secret_access_key
- - Env Var: RCLONE_S3_SECRET_ACCESS_KEY
- - Type: string
- - Default: ""
- –s3-region
- Region to connect to.
- - Config: region
- - Env Var: RCLONE_S3_REGION
- - Type: string
- - Default: ""
- - Examples:
- - “us-east-1”
- - The default endpoint - a good choice if you are unsure.
- - US Region, Northern Virginia or Pacific Northwest.
- - Leave location constraint empty.
- - “us-east-2”
- - US East (Ohio) Region
- - Needs location constraint us-east-2.
- - “us-west-2”
- - US West (Oregon) Region
- - Needs location constraint us-west-2.
- - “us-west-1”
- - US West (Northern California) Region
- - Needs location constraint us-west-1.
- - “ca-central-1”
- - Canada (Central) Region
- - Needs location constraint ca-central-1.
- - “eu-west-1”
- - EU (Ireland) Region
- - Needs location constraint EU or eu-west-1.
- - “eu-west-2”
- - EU (London) Region
- - Needs location constraint eu-west-2.
- - “eu-north-1”
- - EU (Stockholm) Region
- - Needs location constraint eu-north-1.
- - “eu-central-1”
- - EU (Frankfurt) Region
- - Needs location constraint eu-central-1.
- - “ap-southeast-1”
- - Asia Pacific (Singapore) Region
- - Needs location constraint ap-southeast-1.
- - “ap-southeast-2”
- - Asia Pacific (Sydney) Region
- - Needs location constraint ap-southeast-2.
- - “ap-northeast-1”
- - Asia Pacific (Tokyo) Region
- - Needs location constraint ap-northeast-1.
- - “ap-northeast-2”
- - Asia Pacific (Seoul)
- - Needs location constraint ap-northeast-2.
- - “ap-south-1”
- - Asia Pacific (Mumbai)
- - Needs location constraint ap-south-1.
- - “ap-east-1”
- - Asia Patific (Hong Kong) Region
- - Needs location constraint ap-east-1.
- - “sa-east-1”
- - South America (Sao Paulo) Region
- - Needs location constraint sa-east-1.
- –s3-region
- Region to connect to. Leave blank if you are using an S3 clone and you
- don’t have a region.
- - Config: region
- - Env Var: RCLONE_S3_REGION
- - Type: string
- - Default: ""
- - Examples:
- - ""
- - Use this if unsure. Will use v4 signatures and an empty
- region.
- - “other-v2-signature”
- - Use this only if v4 signatures don’t work, eg pre Jewel/v10
- CEPH.
- –s3-endpoint
- Endpoint for S3 API. Leave blank if using AWS to use the default
- endpoint for the region.
- - Config: endpoint
- - Env Var: RCLONE_S3_ENDPOINT
- - Type: string
- - Default: ""
- –s3-endpoint
- Endpoint for IBM COS S3 API. Specify if using an IBM COS On Premise.
- - Config: endpoint
- - Env Var: RCLONE_S3_ENDPOINT
- - Type: string
- - Default: ""
- - Examples:
- - “s3-api.us-geo.objectstorage.softlayer.net”
- - US Cross Region Endpoint
- - “s3-api.dal.us-geo.objectstorage.softlayer.net”
- - US Cross Region Dallas Endpoint
- - “s3-api.wdc-us-geo.objectstorage.softlayer.net”
- - US Cross Region Washington DC Endpoint
- - “s3-api.sjc-us-geo.objectstorage.softlayer.net”
- - US Cross Region San Jose Endpoint
- - “s3-api.us-geo.objectstorage.service.networklayer.com”
- - US Cross Region Private Endpoint
- - “s3-api.dal-us-geo.objectstorage.service.networklayer.com”
- - US Cross Region Dallas Private Endpoint
- - “s3-api.wdc-us-geo.objectstorage.service.networklayer.com”
- - US Cross Region Washington DC Private Endpoint
- - “s3-api.sjc-us-geo.objectstorage.service.networklayer.com”
- - US Cross Region San Jose Private Endpoint
- - “s3.us-east.objectstorage.softlayer.net”
- - US Region East Endpoint
- - “s3.us-east.objectstorage.service.networklayer.com”
- - US Region East Private Endpoint
- - “s3.us-south.objectstorage.softlayer.net”
- - US Region South Endpoint
- - “s3.us-south.objectstorage.service.networklayer.com”
- - US Region South Private Endpoint
- - “s3.eu-geo.objectstorage.softlayer.net”
- - EU Cross Region Endpoint
- - “s3.fra-eu-geo.objectstorage.softlayer.net”
- - EU Cross Region Frankfurt Endpoint
- - “s3.mil-eu-geo.objectstorage.softlayer.net”
- - EU Cross Region Milan Endpoint
- - “s3.ams-eu-geo.objectstorage.softlayer.net”
- - EU Cross Region Amsterdam Endpoint
- - “s3.eu-geo.objectstorage.service.networklayer.com”
- - EU Cross Region Private Endpoint
- - “s3.fra-eu-geo.objectstorage.service.networklayer.com”
- - EU Cross Region Frankfurt Private Endpoint
- - “s3.mil-eu-geo.objectstorage.service.networklayer.com”
- - EU Cross Region Milan Private Endpoint
- - “s3.ams-eu-geo.objectstorage.service.networklayer.com”
- - EU Cross Region Amsterdam Private Endpoint
- - “s3.eu-gb.objectstorage.softlayer.net”
- - Great Britain Endpoint
- - “s3.eu-gb.objectstorage.service.networklayer.com”
- - Great Britain Private Endpoint
- - “s3.ap-geo.objectstorage.softlayer.net”
- - APAC Cross Regional Endpoint
- - “s3.tok-ap-geo.objectstorage.softlayer.net”
- - APAC Cross Regional Tokyo Endpoint
- - “s3.hkg-ap-geo.objectstorage.softlayer.net”
- - APAC Cross Regional HongKong Endpoint
- - “s3.seo-ap-geo.objectstorage.softlayer.net”
- - APAC Cross Regional Seoul Endpoint
- - “s3.ap-geo.objectstorage.service.networklayer.com”
- - APAC Cross Regional Private Endpoint
- - “s3.tok-ap-geo.objectstorage.service.networklayer.com”
- - APAC Cross Regional Tokyo Private Endpoint
- - “s3.hkg-ap-geo.objectstorage.service.networklayer.com”
- - APAC Cross Regional HongKong Private Endpoint
- - “s3.seo-ap-geo.objectstorage.service.networklayer.com”
- - APAC Cross Regional Seoul Private Endpoint
- - “s3.mel01.objectstorage.softlayer.net”
- - Melbourne Single Site Endpoint
- - “s3.mel01.objectstorage.service.networklayer.com”
- - Melbourne Single Site Private Endpoint
- - “s3.tor01.objectstorage.softlayer.net”
- - Toronto Single Site Endpoint
- - “s3.tor01.objectstorage.service.networklayer.com”
- - Toronto Single Site Private Endpoint
- –s3-endpoint
- Endpoint for OSS API.
- - Config: endpoint
- - Env Var: RCLONE_S3_ENDPOINT
- - Type: string
- - Default: ""
- - Examples:
- - “oss-cn-hangzhou.aliyuncs.com”
- - East China 1 (Hangzhou)
- - “oss-cn-shanghai.aliyuncs.com”
- - East China 2 (Shanghai)
- - “oss-cn-qingdao.aliyuncs.com”
- - North China 1 (Qingdao)
- - “oss-cn-beijing.aliyuncs.com”
- - North China 2 (Beijing)
- - “oss-cn-zhangjiakou.aliyuncs.com”
- - North China 3 (Zhangjiakou)
- - “oss-cn-huhehaote.aliyuncs.com”
- - North China 5 (Huhehaote)
- - “oss-cn-shenzhen.aliyuncs.com”
- - South China 1 (Shenzhen)
- - “oss-cn-hongkong.aliyuncs.com”
- - Hong Kong (Hong Kong)
- - “oss-us-west-1.aliyuncs.com”
- - US West 1 (Silicon Valley)
- - “oss-us-east-1.aliyuncs.com”
- - US East 1 (Virginia)
- - “oss-ap-southeast-1.aliyuncs.com”
- - Southeast Asia Southeast 1 (Singapore)
- - “oss-ap-southeast-2.aliyuncs.com”
- - Asia Pacific Southeast 2 (Sydney)
- - “oss-ap-southeast-3.aliyuncs.com”
- - Southeast Asia Southeast 3 (Kuala Lumpur)
- - “oss-ap-southeast-5.aliyuncs.com”
- - Asia Pacific Southeast 5 (Jakarta)
- - “oss-ap-northeast-1.aliyuncs.com”
- - Asia Pacific Northeast 1 (Japan)
- - “oss-ap-south-1.aliyuncs.com”
- - Asia Pacific South 1 (Mumbai)
- - “oss-eu-central-1.aliyuncs.com”
- - Central Europe 1 (Frankfurt)
- - “oss-eu-west-1.aliyuncs.com”
- - West Europe (London)
- - “oss-me-east-1.aliyuncs.com”
- - Middle East 1 (Dubai)
- –s3-endpoint
- Endpoint for S3 API. Required when using an S3 clone.
- - Config: endpoint
- - Env Var: RCLONE_S3_ENDPOINT
- - Type: string
- - Default: ""
- - Examples:
- - “objects-us-east-1.dream.io”
- - Dream Objects endpoint
- - “nyc3.digitaloceanspaces.com”
- - Digital Ocean Spaces New York 3
- - “ams3.digitaloceanspaces.com”
- - Digital Ocean Spaces Amsterdam 3
- - “sgp1.digitaloceanspaces.com”
- - Digital Ocean Spaces Singapore 1
- - “s3.wasabisys.com”
- - Wasabi US East endpoint
- - “s3.us-west-1.wasabisys.com”
- - Wasabi US West endpoint
- - “s3.eu-central-1.wasabisys.com”
- - Wasabi EU Central endpoint
- –s3-location-constraint
- Location constraint - must be set to match the Region. Used when
- creating buckets only.
- - Config: location_constraint
- - Env Var: RCLONE_S3_LOCATION_CONSTRAINT
- - Type: string
- - Default: ""
- - Examples:
- - ""
- - Empty for US Region, Northern Virginia or Pacific Northwest.
- - “us-east-2”
- - US East (Ohio) Region.
- - “us-west-2”
- - US West (Oregon) Region.
- - “us-west-1”
- - US West (Northern California) Region.
- - “ca-central-1”
- - Canada (Central) Region.
- - “eu-west-1”
- - EU (Ireland) Region.
- - “eu-west-2”
- - EU (London) Region.
- - “eu-north-1”
- - EU (Stockholm) Region.
- - “EU”
- - EU Region.
- - “ap-southeast-1”
- - Asia Pacific (Singapore) Region.
- - “ap-southeast-2”
- - Asia Pacific (Sydney) Region.
- - “ap-northeast-1”
- - Asia Pacific (Tokyo) Region.
- - “ap-northeast-2”
- - Asia Pacific (Seoul)
- - “ap-south-1”
- - Asia Pacific (Mumbai)
- - “ap-east-1”
- - Asia Pacific (Hong Kong)
- - “sa-east-1”
- - South America (Sao Paulo) Region.
- –s3-location-constraint
- Location constraint - must match endpoint when using IBM Cloud Public.
- For on-prem COS, do not make a selection from this list, hit enter
- - Config: location_constraint
- - Env Var: RCLONE_S3_LOCATION_CONSTRAINT
- - Type: string
- - Default: ""
- - Examples:
- - “us-standard”
- - US Cross Region Standard
- - “us-vault”
- - US Cross Region Vault
- - “us-cold”
- - US Cross Region Cold
- - “us-flex”
- - US Cross Region Flex
- - “us-east-standard”
- - US East Region Standard
- - “us-east-vault”
- - US East Region Vault
- - “us-east-cold”
- - US East Region Cold
- - “us-east-flex”
- - US East Region Flex
- - “us-south-standard”
- - US South Region Standard
- - “us-south-vault”
- - US South Region Vault
- - “us-south-cold”
- - US South Region Cold
- - “us-south-flex”
- - US South Region Flex
- - “eu-standard”
- - EU Cross Region Standard
- - “eu-vault”
- - EU Cross Region Vault
- - “eu-cold”
- - EU Cross Region Cold
- - “eu-flex”
- - EU Cross Region Flex
- - “eu-gb-standard”
- - Great Britain Standard
- - “eu-gb-vault”
- - Great Britain Vault
- - “eu-gb-cold”
- - Great Britain Cold
- - “eu-gb-flex”
- - Great Britain Flex
- - “ap-standard”
- - APAC Standard
- - “ap-vault”
- - APAC Vault
- - “ap-cold”
- - APAC Cold
- - “ap-flex”
- - APAC Flex
- - “mel01-standard”
- - Melbourne Standard
- - “mel01-vault”
- - Melbourne Vault
- - “mel01-cold”
- - Melbourne Cold
- - “mel01-flex”
- - Melbourne Flex
- - “tor01-standard”
- - Toronto Standard
- - “tor01-vault”
- - Toronto Vault
- - “tor01-cold”
- - Toronto Cold
- - “tor01-flex”
- - Toronto Flex
- –s3-location-constraint
- Location constraint - must be set to match the Region. Leave blank if
- not sure. Used when creating buckets only.
- - Config: location_constraint
- - Env Var: RCLONE_S3_LOCATION_CONSTRAINT
- - Type: string
- - Default: ""
- –s3-acl
- Canned ACL used when creating buckets and storing or copying objects.
- This ACL is used for creating objects and if bucket_acl isn’t set, for
- creating buckets too.
- For more info visit
- https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl
- Note that this ACL is applied when server side copying objects as S3
- doesn’t copy the ACL from the source but rather writes a fresh one.
- - Config: acl
- - Env Var: RCLONE_S3_ACL
- - Type: string
- - Default: ""
- - Examples:
- - “private”
- - Owner gets FULL_CONTROL. No one else has access rights
- (default).
- - “public-read”
- - Owner gets FULL_CONTROL. The AllUsers group gets READ
- access.
- - “public-read-write”
- - Owner gets FULL_CONTROL. The AllUsers group gets READ and
- WRITE access.
- - Granting this on a bucket is generally not recommended.
- - “authenticated-read”
- - Owner gets FULL_CONTROL. The AuthenticatedUsers group gets
- READ access.
- - “bucket-owner-read”
- - Object owner gets FULL_CONTROL. Bucket owner gets READ
- access.
- - If you specify this canned ACL when creating a bucket,
- Amazon S3 ignores it.
- - “bucket-owner-full-control”
- - Both the object owner and the bucket owner get FULL_CONTROL
- over the object.
- - If you specify this canned ACL when creating a bucket,
- Amazon S3 ignores it.
- - “private”
- - Owner gets FULL_CONTROL. No one else has access rights
- (default). This acl is available on IBM Cloud (Infra), IBM
- Cloud (Storage), On-Premise COS
- - “public-read”
- - Owner gets FULL_CONTROL. The AllUsers group gets READ
- access. This acl is available on IBM Cloud (Infra), IBM
- Cloud (Storage), On-Premise IBM COS
- - “public-read-write”
- - Owner gets FULL_CONTROL. The AllUsers group gets READ and
- WRITE access. This acl is available on IBM Cloud (Infra),
- On-Premise IBM COS
- - “authenticated-read”
- - Owner gets FULL_CONTROL. The AuthenticatedUsers group gets
- READ access. Not supported on Buckets. This acl is available
- on IBM Cloud (Infra) and On-Premise IBM COS
- –s3-server-side-encryption
- The server-side encryption algorithm used when storing this object in
- S3.
- - Config: server_side_encryption
- - Env Var: RCLONE_S3_SERVER_SIDE_ENCRYPTION
- - Type: string
- - Default: ""
- - Examples:
- - ""
- - None
- - “AES256”
- - AES256
- - “aws:kms”
- - aws:kms
- –s3-sse-kms-key-id
- If using KMS ID you must provide the ARN of Key.
- - Config: sse_kms_key_id
- - Env Var: RCLONE_S3_SSE_KMS_KEY_ID
- - Type: string
- - Default: ""
- - Examples:
- - ""
- - None
- - "arn:aws:kms:us-east-1:*"
- - arn:aws:kms:*
- –s3-storage-class
- The storage class to use when storing new objects in S3.
- - Config: storage_class
- - Env Var: RCLONE_S3_STORAGE_CLASS
- - Type: string
- - Default: ""
- - Examples:
- - ""
- - Default
- - “STANDARD”
- - Standard storage class
- - “REDUCED_REDUNDANCY”
- - Reduced redundancy storage class
- - “STANDARD_IA”
- - Standard Infrequent Access storage class
- - “ONEZONE_IA”
- - One Zone Infrequent Access storage class
- - “GLACIER”
- - Glacier storage class
- - “DEEP_ARCHIVE”
- - Glacier Deep Archive storage class
- - “INTELLIGENT_TIERING”
- - Intelligent-Tiering storage class
- –s3-storage-class
- The storage class to use when storing new objects in OSS.
- - Config: storage_class
- - Env Var: RCLONE_S3_STORAGE_CLASS
- - Type: string
- - Default: ""
- - Examples:
- - ""
- - Default
- - “STANDARD”
- - Standard storage class
- - “GLACIER”
- - Archive storage mode.
- - “STANDARD_IA”
- - Infrequent access storage mode.
- Advanced Options
- Here are the advanced options specific to s3 (Amazon S3 Compliant
- Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS,
- Minio, etc)).
- –s3-bucket-acl
- Canned ACL used when creating buckets.
- For more info visit
- https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl
- Note that this ACL is applied when only when creating buckets. If it
- isn’t set then “acl” is used instead.
- - Config: bucket_acl
- - Env Var: RCLONE_S3_BUCKET_ACL
- - Type: string
- - Default: ""
- - Examples:
- - “private”
- - Owner gets FULL_CONTROL. No one else has access rights
- (default).
- - “public-read”
- - Owner gets FULL_CONTROL. The AllUsers group gets READ
- access.
- - “public-read-write”
- - Owner gets FULL_CONTROL. The AllUsers group gets READ and
- WRITE access.
- - Granting this on a bucket is generally not recommended.
- - “authenticated-read”
- - Owner gets FULL_CONTROL. The AuthenticatedUsers group gets
- READ access.
- –s3-upload-cutoff
- Cutoff for switching to chunked upload
- Any files larger than this will be uploaded in chunks of chunk_size. The
- minimum is 0 and the maximum is 5GB.
- - Config: upload_cutoff
- - Env Var: RCLONE_S3_UPLOAD_CUTOFF
- - Type: SizeSuffix
- - Default: 200M
- –s3-chunk-size
- Chunk size to use for uploading.
- When uploading files larger than upload_cutoff or files with unknown
- size (eg from “rclone rcat” or uploaded with “rclone mount” or google
- photos or google docs) they will be uploaded as multipart uploads using
- this chunk size.
- Note that “–s3-upload-concurrency” chunks of this size are buffered in
- memory per transfer.
- If you are transferring large files over high speed links and you have
- enough memory, then increasing this will speed up the transfers.
- Rclone will automatically increase the chunk size when uploading a large
- file of known size to stay below the 10,000 chunks limit.
- Files of unknown size are uploaded with the configured chunk_size. Since
- the default chunk size is 5MB and there can be at most 10,000 chunks,
- this means that by default the maximum size of file you can stream
- upload is 48GB. If you wish to stream upload larger files then you will
- need to increase chunk_size.
- - Config: chunk_size
- - Env Var: RCLONE_S3_CHUNK_SIZE
- - Type: SizeSuffix
- - Default: 5M
- –s3-copy-cutoff
- Cutoff for switching to multipart copy
- Any files larger than this that need to be server side copied will be
- copied in chunks of this size.
- The minimum is 0 and the maximum is 5GB.
- - Config: copy_cutoff
- - Env Var: RCLONE_S3_COPY_CUTOFF
- - Type: SizeSuffix
- - Default: 5G
- –s3-disable-checksum
- Don’t store MD5 checksum with object metadata
- - Config: disable_checksum
- - Env Var: RCLONE_S3_DISABLE_CHECKSUM
- - Type: bool
- - Default: false
- –s3-session-token
- An AWS session token
- - Config: session_token
- - Env Var: RCLONE_S3_SESSION_TOKEN
- - Type: string
- - Default: ""
- –s3-upload-concurrency
- Concurrency for multipart uploads.
- This is the number of chunks of the same file that are uploaded
- concurrently.
- If you are uploading small numbers of large file over high speed link
- and these uploads do not fully utilize your bandwidth, then increasing
- this may help to speed up the transfers.
- - Config: upload_concurrency
- - Env Var: RCLONE_S3_UPLOAD_CONCURRENCY
- - Type: int
- - Default: 4
- –s3-force-path-style
- If true use path style access if false use virtual hosted style.
- If this is true (the default) then rclone will use path style access, if
- false then rclone will use virtual path style. See the AWS S3 docs for
- more info.
- Some providers (eg AWS, Aliyun OSS or Netease COS) require this set to
- false - rclone will do this automatically based on the provider setting.
- - Config: force_path_style
- - Env Var: RCLONE_S3_FORCE_PATH_STYLE
- - Type: bool
- - Default: true
- –s3-v2-auth
- If true use v2 authentication.
- If this is false (the default) then rclone will use v4 authentication.
- If it is set then rclone will use v2 authentication.
- Use this only if v4 signatures don’t work, eg pre Jewel/v10 CEPH.
- - Config: v2_auth
- - Env Var: RCLONE_S3_V2_AUTH
- - Type: bool
- - Default: false
- –s3-use-accelerate-endpoint
- If true use the AWS S3 accelerated endpoint.
- See: AWS S3 Transfer acceleration
- - Config: use_accelerate_endpoint
- - Env Var: RCLONE_S3_USE_ACCELERATE_ENDPOINT
- - Type: bool
- - Default: false
- –s3-leave-parts-on-error
- If true avoid calling abort upload on a failure, leaving all
- successfully uploaded parts on S3 for manual recovery.
- It should be set to true for resuming uploads across different sessions.
- WARNING: Storing parts of an incomplete multipart upload counts towards
- space usage on S3 and will add additional costs if not cleaned up.
- - Config: leave_parts_on_error
- - Env Var: RCLONE_S3_LEAVE_PARTS_ON_ERROR
- - Type: bool
- - Default: false
- –s3-list-chunk
- Size of listing chunk (response list for each ListObject S3 request).
- This option is also known as “MaxKeys”, “max-items”, or “page-size” from
- the AWS S3 specification. Most services truncate the response list to
- 1000 objects even if requested more than that. In AWS S3 this is a
- global maximum and cannot be changed, see AWS S3. In Ceph, this can be
- increased with the “rgw list buckets max chunk” option.
- - Config: list_chunk
- - Env Var: RCLONE_S3_LIST_CHUNK
- - Type: int
- - Default: 1000
- –s3-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_S3_ENCODING
- - Type: MultiEncoder
- - Default: Slash,InvalidUtf8,Dot
- Anonymous access to public buckets
- If you want to use rclone to access a public bucket, configure with a
- blank access_key_id and secret_access_key. Your config should end up
- looking like this:
- [anons3]
- type = s3
- provider = AWS
- env_auth = false
- access_key_id =
- secret_access_key =
- region = us-east-1
- endpoint =
- location_constraint =
- acl = private
- server_side_encryption =
- storage_class =
- Then use it as normal with the name of the public bucket, eg
- rclone lsd anons3:1000genomes
- You will be able to list and copy data but not upload it.
- Ceph
- Ceph is an open source unified, distributed storage system designed for
- excellent performance, reliability and scalability. It has an S3
- compatible object storage interface.
- To use rclone with Ceph, configure as above but leave the region blank
- and set the endpoint. You should end up with something like this in your
- config:
- [ceph]
- type = s3
- provider = Ceph
- env_auth = false
- access_key_id = XXX
- secret_access_key = YYY
- region =
- endpoint = https://ceph.endpoint.example.com
- location_constraint =
- acl =
- server_side_encryption =
- storage_class =
- If you are using an older version of CEPH, eg 10.2.x Jewel, then you may
- need to supply the parameter --s3-upload-cutoff 0 or put this in the
- config file as upload_cutoff 0 to work around a bug which causes
- uploading of small files to fail.
- Note also that Ceph sometimes puts / in the passwords it gives users. If
- you read the secret access key using the command line tools you will get
- a JSON blob with the / escaped as \/. Make sure you only write / in the
- secret access key.
- Eg the dump from Ceph looks something like this (irrelevant keys
- removed).
- {
- "user_id": "xxx",
- "display_name": "xxxx",
- "keys": [
- {
- "user": "xxx",
- "access_key": "xxxxxx",
- "secret_key": "xxxxxx\/xxxx"
- }
- ],
- }
- Because this is a json dump, it is encoding the / as \/, so if you use
- the secret key as xxxxxx/xxxx it will work fine.
- Dreamhost
- Dreamhost DreamObjects is an object storage system based on CEPH.
- To use rclone with Dreamhost, configure as above but leave the region
- blank and set the endpoint. You should end up with something like this
- in your config:
- [dreamobjects]
- type = s3
- provider = DreamHost
- env_auth = false
- access_key_id = your_access_key
- secret_access_key = your_secret_key
- region =
- endpoint = objects-us-west-1.dream.io
- location_constraint =
- acl = private
- server_side_encryption =
- storage_class =
- DigitalOcean Spaces
- Spaces is an S3-interoperable object storage service from cloud provider
- DigitalOcean.
- To connect to DigitalOcean Spaces you will need an access key and secret
- key. These can be retrieved on the “Applications & API” page of the
- DigitalOcean control panel. They will be needed when promted by
- rclone config for your access_key_id and secret_access_key.
- When prompted for a region or location_constraint, press enter to use
- the default value. The region must be included in the endpoint setting
- (e.g. nyc3.digitaloceanspaces.com). The default values can be used for
- other settings.
- Going through the whole process of creating a new remote by running
- rclone config, each prompt should be answered as shown below:
- Storage> s3
- env_auth> 1
- access_key_id> YOUR_ACCESS_KEY
- secret_access_key> YOUR_SECRET_KEY
- region>
- endpoint> nyc3.digitaloceanspaces.com
- location_constraint>
- acl>
- storage_class>
- The resulting configuration file should look like:
- [spaces]
- type = s3
- provider = DigitalOcean
- env_auth = false
- access_key_id = YOUR_ACCESS_KEY
- secret_access_key = YOUR_SECRET_KEY
- region =
- endpoint = nyc3.digitaloceanspaces.com
- location_constraint =
- acl =
- server_side_encryption =
- storage_class =
- Once configured, you can create a new Space and begin copying files. For
- example:
- rclone mkdir spaces:my-new-space
- rclone copy /path/to/files spaces:my-new-space
- IBM COS (S3)
- Information stored with IBM Cloud Object Storage is encrypted and
- dispersed across multiple geographic locations, and accessed through an
- implementation of the S3 API. This service makes use of the distributed
- storage technologies provided by IBM’s Cloud Object Storage System
- (formerly Cleversafe). For more information visit:
- (http://www.ibm.com/cloud/object-storage)
- To configure access to IBM COS S3, follow the steps below:
- 1. Run rclone config and select n for a new remote.
- 2018/02/14 14:13:11 NOTICE: Config file "C:\\Users\\a\\.config\\rclone\\rclone.conf" not found - using defaults
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- 2. Enter the name for the configuration
- name> <YOUR NAME>
- 3. Select “s3” storage.
- Choose a number from below, or type in your own value
- 1 / Alias for an existing remote
- \ "alias"
- 2 / Amazon Drive
- \ "amazon cloud drive"
- 3 / Amazon S3 Complaint Storage Providers (Dreamhost, Ceph, Minio, IBM COS)
- \ "s3"
- 4 / Backblaze B2
- \ "b2"
- [snip]
- 23 / http Connection
- \ "http"
- Storage> 3
- 4. Select IBM COS as the S3 Storage Provider.
- Choose the S3 provider.
- Choose a number from below, or type in your own value
- 1 / Choose this option to configure Storage to AWS S3
- \ "AWS"
- 2 / Choose this option to configure Storage to Ceph Systems
- \ "Ceph"
- 3 / Choose this option to configure Storage to Dreamhost
- \ "Dreamhost"
- 4 / Choose this option to the configure Storage to IBM COS S3
- \ "IBMCOS"
- 5 / Choose this option to the configure Storage to Minio
- \ "Minio"
- Provider>4
- 5. Enter the Access Key and Secret.
- AWS Access Key ID - leave blank for anonymous access or runtime credentials.
- access_key_id> <>
- AWS Secret Access Key (password) - leave blank for anonymous access or runtime credentials.
- secret_access_key> <>
- 6. Specify the endpoint for IBM COS. For Public IBM COS, choose from
- the option below. For On Premise IBM COS, enter an enpoint address.
- Endpoint for IBM COS S3 API.
- Specify if using an IBM COS On Premise.
- Choose a number from below, or type in your own value
- 1 / US Cross Region Endpoint
- \ "s3-api.us-geo.objectstorage.softlayer.net"
- 2 / US Cross Region Dallas Endpoint
- \ "s3-api.dal.us-geo.objectstorage.softlayer.net"
- 3 / US Cross Region Washington DC Endpoint
- \ "s3-api.wdc-us-geo.objectstorage.softlayer.net"
- 4 / US Cross Region San Jose Endpoint
- \ "s3-api.sjc-us-geo.objectstorage.softlayer.net"
- 5 / US Cross Region Private Endpoint
- \ "s3-api.us-geo.objectstorage.service.networklayer.com"
- 6 / US Cross Region Dallas Private Endpoint
- \ "s3-api.dal-us-geo.objectstorage.service.networklayer.com"
- 7 / US Cross Region Washington DC Private Endpoint
- \ "s3-api.wdc-us-geo.objectstorage.service.networklayer.com"
- 8 / US Cross Region San Jose Private Endpoint
- \ "s3-api.sjc-us-geo.objectstorage.service.networklayer.com"
- 9 / US Region East Endpoint
- \ "s3.us-east.objectstorage.softlayer.net"
- 10 / US Region East Private Endpoint
- \ "s3.us-east.objectstorage.service.networklayer.com"
- 11 / US Region South Endpoint
- [snip]
- 34 / Toronto Single Site Private Endpoint
- \ "s3.tor01.objectstorage.service.networklayer.com"
- endpoint>1
- 7. Specify a IBM COS Location Constraint. The location constraint must
- match endpoint when using IBM Cloud Public. For on-prem COS, do not
- make a selection from this list, hit enter
- 1 / US Cross Region Standard
- \ "us-standard"
- 2 / US Cross Region Vault
- \ "us-vault"
- 3 / US Cross Region Cold
- \ "us-cold"
- 4 / US Cross Region Flex
- \ "us-flex"
- 5 / US East Region Standard
- \ "us-east-standard"
- 6 / US East Region Vault
- \ "us-east-vault"
- 7 / US East Region Cold
- \ "us-east-cold"
- 8 / US East Region Flex
- \ "us-east-flex"
- 9 / US South Region Standard
- \ "us-south-standard"
- 10 / US South Region Vault
- \ "us-south-vault"
- [snip]
- 32 / Toronto Flex
- \ "tor01-flex"
- location_constraint>1
- 9. Specify a canned ACL. IBM Cloud (Strorage) supports “public-read”
- and “private”. IBM Cloud(Infra) supports all the canned ACLs.
- On-Premise COS supports all the canned ACLs.
- Canned ACL used when creating buckets and/or storing objects in S3.
- For more info visit https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl
- Choose a number from below, or type in your own value
- 1 / Owner gets FULL_CONTROL. No one else has access rights (default). This acl is available on IBM Cloud (Infra), IBM Cloud (Storage), On-Premise COS
- \ "private"
- 2 / Owner gets FULL_CONTROL. The AllUsers group gets READ access. This acl is available on IBM Cloud (Infra), IBM Cloud (Storage), On-Premise IBM COS
- \ "public-read"
- 3 / Owner gets FULL_CONTROL. The AllUsers group gets READ and WRITE access. This acl is available on IBM Cloud (Infra), On-Premise IBM COS
- \ "public-read-write"
- 4 / Owner gets FULL_CONTROL. The AuthenticatedUsers group gets READ access. Not supported on Buckets. This acl is available on IBM Cloud (Infra) and On-Premise IBM COS
- \ "authenticated-read"
- acl> 1
- 12. Review the displayed configuration and accept to save the “remote”
- then quit. The config file should look like this
- [xxx]
- type = s3
- Provider = IBMCOS
- access_key_id = xxx
- secret_access_key = yyy
- endpoint = s3-api.us-geo.objectstorage.softlayer.net
- location_constraint = us-standard
- acl = private
- 13. Execute rclone commands
- 1) Create a bucket.
- rclone mkdir IBM-COS-XREGION:newbucket
- 2) List available buckets.
- rclone lsd IBM-COS-XREGION:
- -1 2017-11-08 21:16:22 -1 test
- -1 2018-02-14 20:16:39 -1 newbucket
- 3) List contents of a bucket.
- rclone ls IBM-COS-XREGION:newbucket
- 18685952 test.exe
- 4) Copy a file from local to remote.
- rclone copy /Users/file.txt IBM-COS-XREGION:newbucket
- 5) Copy a file from remote to local.
- rclone copy IBM-COS-XREGION:newbucket/file.txt .
- 6) Delete a file on remote.
- rclone delete IBM-COS-XREGION:newbucket/file.txt
- Minio
- Minio is an object storage server built for cloud application developers
- and devops.
- It is very easy to install and provides an S3 compatible server which
- can be used by rclone.
- To use it, install Minio following the instructions here.
- When it configures itself Minio will print something like this
- Endpoint: http://192.168.1.106:9000 http://172.23.0.1:9000
- AccessKey: USWUXHGYZQYFYFFIT3RE
- SecretKey: MOJRH0mkL1IPauahWITSVvyDrQbEEIwljvmxdq03
- Region: us-east-1
- SQS ARNs: arn:minio:sqs:us-east-1:1:redis arn:minio:sqs:us-east-1:2:redis
- Browser Access:
- http://192.168.1.106:9000 http://172.23.0.1:9000
- Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
- $ mc config host add myminio http://192.168.1.106:9000 USWUXHGYZQYFYFFIT3RE MOJRH0mkL1IPauahWITSVvyDrQbEEIwljvmxdq03
- Object API (Amazon S3 compatible):
- Go: https://docs.minio.io/docs/golang-client-quickstart-guide
- Java: https://docs.minio.io/docs/java-client-quickstart-guide
- Python: https://docs.minio.io/docs/python-client-quickstart-guide
- JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
- .NET: https://docs.minio.io/docs/dotnet-client-quickstart-guide
- Drive Capacity: 26 GiB Free, 165 GiB Total
- These details need to go into rclone config like this. Note that it is
- important to put the region in as stated above.
- env_auth> 1
- access_key_id> USWUXHGYZQYFYFFIT3RE
- secret_access_key> MOJRH0mkL1IPauahWITSVvyDrQbEEIwljvmxdq03
- region> us-east-1
- endpoint> http://192.168.1.106:9000
- location_constraint>
- server_side_encryption>
- Which makes the config file look like this
- [minio]
- type = s3
- provider = Minio
- env_auth = false
- access_key_id = USWUXHGYZQYFYFFIT3RE
- secret_access_key = MOJRH0mkL1IPauahWITSVvyDrQbEEIwljvmxdq03
- region = us-east-1
- endpoint = http://192.168.1.106:9000
- location_constraint =
- server_side_encryption =
- So once set up, for example to copy files into a bucket
- rclone copy /path/to/files minio:bucket
- Scaleway
- Scaleway The Object Storage platform allows you to store anything from
- backups, logs and web assets to documents and photos. Files can be
- dropped from the Scaleway console or transferred through our API and CLI
- or using any S3-compatible tool.
- Scaleway provides an S3 interface which can be configured for use with
- rclone like this:
- [scaleway]
- type = s3
- env_auth = false
- endpoint = s3.nl-ams.scw.cloud
- access_key_id = SCWXXXXXXXXXXXXXX
- secret_access_key = 1111111-2222-3333-44444-55555555555555
- region = nl-ams
- location_constraint =
- acl = private
- force_path_style = false
- server_side_encryption =
- storage_class =
- Wasabi
- Wasabi is a cloud-based object storage service for a broad range of
- applications and use cases. Wasabi is designed for individuals and
- organizations that require a high-performance, reliable, and secure data
- storage infrastructure at minimal cost.
- Wasabi provides an S3 interface which can be configured for use with
- rclone like this.
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- n/s> n
- name> wasabi
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Amazon S3 (also Dreamhost, Ceph, Minio)
- \ "s3"
- [snip]
- Storage> s3
- Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars). Only applies if access_key_id and secret_access_key is blank.
- Choose a number from below, or type in your own value
- 1 / Enter AWS credentials in the next step
- \ "false"
- 2 / Get AWS credentials from the environment (env vars or IAM)
- \ "true"
- env_auth> 1
- AWS Access Key ID - leave blank for anonymous access or runtime credentials.
- access_key_id> YOURACCESSKEY
- AWS Secret Access Key (password) - leave blank for anonymous access or runtime credentials.
- secret_access_key> YOURSECRETACCESSKEY
- Region to connect to.
- Choose a number from below, or type in your own value
- / The default endpoint - a good choice if you are unsure.
- 1 | US Region, Northern Virginia or Pacific Northwest.
- | Leave location constraint empty.
- \ "us-east-1"
- [snip]
- region> us-east-1
- Endpoint for S3 API.
- Leave blank if using AWS to use the default endpoint for the region.
- Specify if using an S3 clone such as Ceph.
- endpoint> s3.wasabisys.com
- Location constraint - must be set to match the Region. Used when creating buckets only.
- Choose a number from below, or type in your own value
- 1 / Empty for US Region, Northern Virginia or Pacific Northwest.
- \ ""
- [snip]
- location_constraint>
- Canned ACL used when creating buckets and/or storing objects in S3.
- For more info visit https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl
- Choose a number from below, or type in your own value
- 1 / Owner gets FULL_CONTROL. No one else has access rights (default).
- \ "private"
- [snip]
- acl>
- The server-side encryption algorithm used when storing this object in S3.
- Choose a number from below, or type in your own value
- 1 / None
- \ ""
- 2 / AES256
- \ "AES256"
- server_side_encryption>
- The storage class to use when storing objects in S3.
- Choose a number from below, or type in your own value
- 1 / Default
- \ ""
- 2 / Standard storage class
- \ "STANDARD"
- 3 / Reduced redundancy storage class
- \ "REDUCED_REDUNDANCY"
- 4 / Standard Infrequent Access storage class
- \ "STANDARD_IA"
- storage_class>
- Remote config
- --------------------
- [wasabi]
- env_auth = false
- access_key_id = YOURACCESSKEY
- secret_access_key = YOURSECRETACCESSKEY
- region = us-east-1
- endpoint = s3.wasabisys.com
- location_constraint =
- acl =
- server_side_encryption =
- storage_class =
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- This will leave the config file looking like this.
- [wasabi]
- type = s3
- provider = Wasabi
- env_auth = false
- access_key_id = YOURACCESSKEY
- secret_access_key = YOURSECRETACCESSKEY
- region =
- endpoint = s3.wasabisys.com
- location_constraint =
- acl =
- server_side_encryption =
- storage_class =
- Alibaba OSS
- Here is an example of making an Alibaba Cloud (Aliyun) OSS
- configuration. First run:
- rclone config
- This will guide you through an interactive setup process.
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> oss
- Type of storage to configure.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- [snip]
- 4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)
- \ "s3"
- [snip]
- Storage> s3
- Choose your S3 provider.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- 1 / Amazon Web Services (AWS) S3
- \ "AWS"
- 2 / Alibaba Cloud Object Storage System (OSS) formerly Aliyun
- \ "Alibaba"
- 3 / Ceph Object Storage
- \ "Ceph"
- [snip]
- provider> Alibaba
- Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars).
- Only applies if access_key_id and secret_access_key is blank.
- Enter a boolean value (true or false). Press Enter for the default ("false").
- Choose a number from below, or type in your own value
- 1 / Enter AWS credentials in the next step
- \ "false"
- 2 / Get AWS credentials from the environment (env vars or IAM)
- \ "true"
- env_auth> 1
- AWS Access Key ID.
- Leave blank for anonymous access or runtime credentials.
- Enter a string value. Press Enter for the default ("").
- access_key_id> accesskeyid
- AWS Secret Access Key (password)
- Leave blank for anonymous access or runtime credentials.
- Enter a string value. Press Enter for the default ("").
- secret_access_key> secretaccesskey
- Endpoint for OSS API.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- 1 / East China 1 (Hangzhou)
- \ "oss-cn-hangzhou.aliyuncs.com"
- 2 / East China 2 (Shanghai)
- \ "oss-cn-shanghai.aliyuncs.com"
- 3 / North China 1 (Qingdao)
- \ "oss-cn-qingdao.aliyuncs.com"
- [snip]
- endpoint> 1
- Canned ACL used when creating buckets and storing or copying objects.
- Note that this ACL is applied when server side copying objects as S3
- doesn't copy the ACL from the source but rather writes a fresh one.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- 1 / Owner gets FULL_CONTROL. No one else has access rights (default).
- \ "private"
- 2 / Owner gets FULL_CONTROL. The AllUsers group gets READ access.
- \ "public-read"
- / Owner gets FULL_CONTROL. The AllUsers group gets READ and WRITE access.
- [snip]
- acl> 1
- The storage class to use when storing new objects in OSS.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- 1 / Default
- \ ""
- 2 / Standard storage class
- \ "STANDARD"
- 3 / Archive storage mode.
- \ "GLACIER"
- 4 / Infrequent access storage mode.
- \ "STANDARD_IA"
- storage_class> 1
- Edit advanced config? (y/n)
- y) Yes
- n) No
- y/n> n
- Remote config
- --------------------
- [oss]
- type = s3
- provider = Alibaba
- env_auth = false
- access_key_id = accesskeyid
- secret_access_key = secretaccesskey
- endpoint = oss-cn-hangzhou.aliyuncs.com
- acl = private
- storage_class = Standard
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Netease NOS
- For Netease NOS configure as per the configurator rclone config setting
- the provider Netease. This will automatically set
- force_path_style = false which is necessary for it to run properly.
- Backblaze B2
- B2 is Backblaze’s cloud storage system.
- Paths are specified as remote:bucket (or remote: for the lsd command.)
- You may put subdirectories in too, eg remote:bucket/path/to/dir.
- Here is an example of making a b2 configuration. First run
- rclone config
- This will guide you through an interactive setup process. To
- authenticate you will either need your Account ID (a short hex number)
- and Master Application Key (a long hex number) OR an Application Key,
- which is the recommended method. See below for further details on
- generating and using an Application Key.
- No remotes found - make a new one
- n) New remote
- q) Quit config
- n/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Backblaze B2
- \ "b2"
- [snip]
- Storage> b2
- Account ID or Application Key ID
- account> 123456789abc
- Application Key
- key> 0123456789abcdef0123456789abcdef0123456789
- Endpoint for the service - leave blank normally.
- endpoint>
- Remote config
- --------------------
- [remote]
- account = 123456789abc
- key = 0123456789abcdef0123456789abcdef0123456789
- endpoint =
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- This remote is called remote and can now be used like this
- See all buckets
- rclone lsd remote:
- Create a new bucket
- rclone mkdir remote:bucket
- List the contents of a bucket
- rclone ls remote:bucket
- Sync /home/local/directory to the remote bucket, deleting any excess
- files in the bucket.
- rclone sync /home/local/directory remote:bucket
- Application Keys
- B2 supports multiple Application Keys for different access permission to
- B2 Buckets.
- You can use these with rclone too; you will need to use rclone version
- 1.43 or later.
- Follow Backblaze’s docs to create an Application Key with the required
- permission and add the applicationKeyId as the account and the
- Application Key itself as the key.
- Note that you must put the _applicationKeyId_ as the account – you can’t
- use the master Account ID. If you try then B2 will return 401 errors.
- –fast-list
- This remote supports --fast-list which allows you to use fewer
- transactions in exchange for more memory. See the rclone docs for more
- details.
- Modified time
- The modified time is stored as metadata on the object as
- X-Bz-Info-src_last_modified_millis as milliseconds since 1970-01-01 in
- the Backblaze standard. Other tools should be able to use this as a
- modified time.
- Modified times are used in syncing and are fully supported. Note that if
- a modification time needs to be updated on an object then it will create
- a new version of the object.
- Restricted filename characters
- In addition to the default restricted characters set the following
- characters are also replaced:
- Character Value Replacement
- ----------- ------- -------------
- \ 0x5C \
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- SHA1 checksums
- The SHA1 checksums of the files are checked on upload and download and
- will be used in the syncing process.
- Large files (bigger than the limit in --b2-upload-cutoff) which are
- uploaded in chunks will store their SHA1 on the object as
- X-Bz-Info-large_file_sha1 as recommended by Backblaze.
- For a large file to be uploaded with an SHA1 checksum, the source needs
- to support SHA1 checksums. The local disk supports SHA1 checksums so
- large file transfers from local disk will have an SHA1. See the overview
- for exactly which remotes support SHA1.
- Sources which don’t support SHA1, in particular crypt will upload large
- files without SHA1 checksums. This may be fixed in the future (see
- #1767).
- Files sizes below --b2-upload-cutoff will always have an SHA1 regardless
- of the source.
- Transfers
- Backblaze recommends that you do lots of transfers simultaneously for
- maximum speed. In tests from my SSD equipped laptop the optimum setting
- is about --transfers 32 though higher numbers may be used for a slight
- speed improvement. The optimum number for you may vary depending on your
- hardware, how big the files are, how much you want to load your
- computer, etc. The default of --transfers 4 is definitely too low for
- Backblaze B2 though.
- Note that uploading big files (bigger than 200 MB by default) will use a
- 96 MB RAM buffer by default. There can be at most --transfers of these
- in use at any moment, so this sets the upper limit on the memory used.
- Versions
- When rclone uploads a new version of a file it creates a new version of
- it. Likewise when you delete a file, the old version will be marked
- hidden and still be available. Conversely, you may opt in to a “hard
- delete” of files with the --b2-hard-delete flag which would permanently
- remove the file instead of hiding it.
- Old versions of files, where available, are visible using the
- --b2-versions flag.
- NB Note that --b2-versions does not work with crypt at the moment #1627.
- Using –backup-dir with rclone is the recommended way of working around
- this.
- If you wish to remove all the old versions then you can use the
- rclone cleanup remote:bucket command which will delete all the old
- versions of files, leaving the current ones intact. You can also supply
- a path and only old versions under that path will be deleted, eg
- rclone cleanup remote:bucket/path/to/stuff.
- Note that cleanup will remove partially uploaded files from the bucket
- if they are more than a day old.
- When you purge a bucket, the current and the old versions will be
- deleted then the bucket will be deleted.
- However delete will cause the current versions of the files to become
- hidden old versions.
- Here is a session showing the listing and retrieval of an old version
- followed by a cleanup of the old versions.
- Show current version and all the versions with --b2-versions flag.
- $ rclone -q ls b2:cleanup-test
- 9 one.txt
- $ rclone -q --b2-versions ls b2:cleanup-test
- 9 one.txt
- 8 one-v2016-07-04-141032-000.txt
- 16 one-v2016-07-04-141003-000.txt
- 15 one-v2016-07-02-155621-000.txt
- Retrieve an old version
- $ rclone -q --b2-versions copy b2:cleanup-test/one-v2016-07-04-141003-000.txt /tmp
- $ ls -l /tmp/one-v2016-07-04-141003-000.txt
- -rw-rw-r-- 1 ncw ncw 16 Jul 2 17:46 /tmp/one-v2016-07-04-141003-000.txt
- Clean up all the old versions and show that they’ve gone.
- $ rclone -q cleanup b2:cleanup-test
- $ rclone -q ls b2:cleanup-test
- 9 one.txt
- $ rclone -q --b2-versions ls b2:cleanup-test
- 9 one.txt
- Data usage
- It is useful to know how many requests are sent to the server in
- different scenarios.
- All copy commands send the following 4 requests:
- /b2api/v1/b2_authorize_account
- /b2api/v1/b2_create_bucket
- /b2api/v1/b2_list_buckets
- /b2api/v1/b2_list_file_names
- The b2_list_file_names request will be sent once for every 1k files in
- the remote path, providing the checksum and modification time of the
- listed files. As of version 1.33 issue #818 causes extra requests to be
- sent when using B2 with Crypt. When a copy operation does not require
- any files to be uploaded, no more requests will be sent.
- Uploading files that do not require chunking, will send 2 requests per
- file upload:
- /b2api/v1/b2_get_upload_url
- /b2api/v1/b2_upload_file/
- Uploading files requiring chunking, will send 2 requests (one each to
- start and finish the upload) and another 2 requests for each chunk:
- /b2api/v1/b2_start_large_file
- /b2api/v1/b2_get_upload_part_url
- /b2api/v1/b2_upload_part/
- /b2api/v1/b2_finish_large_file
- Versions
- Versions can be viewed with the --b2-versions flag. When it is set
- rclone will show and act on older versions of files. For example
- Listing without --b2-versions
- $ rclone -q ls b2:cleanup-test
- 9 one.txt
- And with
- $ rclone -q --b2-versions ls b2:cleanup-test
- 9 one.txt
- 8 one-v2016-07-04-141032-000.txt
- 16 one-v2016-07-04-141003-000.txt
- 15 one-v2016-07-02-155621-000.txt
- Showing that the current version is unchanged but older versions can be
- seen. These have the UTC date that they were uploaded to the server to
- the nearest millisecond appended to them.
- Note that when using --b2-versions no file write operations are
- permitted, so you can’t upload files or delete them.
- B2 and rclone link
- Rclone supports generating file share links for private B2 buckets. They
- can either be for a file for example:
- ./rclone link B2:bucket/path/to/file.txt
- https://f002.backblazeb2.com/file/bucket/path/to/file.txt?Authorization=xxxxxxxx
- or if run on a directory you will get:
- ./rclone link B2:bucket/path
- https://f002.backblazeb2.com/file/bucket/path?Authorization=xxxxxxxx
- you can then use the authorization token (the part of the url from the
- ?Authorization= on) on any file path under that directory. For example:
- https://f002.backblazeb2.com/file/bucket/path/to/file1?Authorization=xxxxxxxx
- https://f002.backblazeb2.com/file/bucket/path/file2?Authorization=xxxxxxxx
- https://f002.backblazeb2.com/file/bucket/path/folder/file3?Authorization=xxxxxxxx
- Standard Options
- Here are the standard options specific to b2 (Backblaze B2).
- –b2-account
- Account ID or Application Key ID
- - Config: account
- - Env Var: RCLONE_B2_ACCOUNT
- - Type: string
- - Default: ""
- –b2-key
- Application Key
- - Config: key
- - Env Var: RCLONE_B2_KEY
- - Type: string
- - Default: ""
- –b2-hard-delete
- Permanently delete files on remote removal, otherwise hide files.
- - Config: hard_delete
- - Env Var: RCLONE_B2_HARD_DELETE
- - Type: bool
- - Default: false
- Advanced Options
- Here are the advanced options specific to b2 (Backblaze B2).
- –b2-endpoint
- Endpoint for the service. Leave blank normally.
- - Config: endpoint
- - Env Var: RCLONE_B2_ENDPOINT
- - Type: string
- - Default: ""
- –b2-test-mode
- A flag string for X-Bz-Test-Mode header for debugging.
- This is for debugging purposes only. Setting it to one of the strings
- below will cause b2 to return specific errors:
- - “fail_some_uploads”
- - “expire_some_account_authorization_tokens”
- - “force_cap_exceeded”
- These will be set in the “X-Bz-Test-Mode” header which is documented in
- the b2 integrations checklist.
- - Config: test_mode
- - Env Var: RCLONE_B2_TEST_MODE
- - Type: string
- - Default: ""
- –b2-versions
- Include old versions in directory listings. Note that when using this no
- file write operations are permitted, so you can’t upload files or delete
- them.
- - Config: versions
- - Env Var: RCLONE_B2_VERSIONS
- - Type: bool
- - Default: false
- –b2-upload-cutoff
- Cutoff for switching to chunked upload.
- Files above this size will be uploaded in chunks of “–b2-chunk-size”.
- This value should be set no larger than 4.657GiB (== 5GB).
- - Config: upload_cutoff
- - Env Var: RCLONE_B2_UPLOAD_CUTOFF
- - Type: SizeSuffix
- - Default: 200M
- –b2-chunk-size
- Upload chunk size. Must fit in memory.
- When uploading large files, chunk the file into this size. Note that
- these chunks are buffered in memory and there might a maximum of
- “–transfers” chunks in progress at once. 5,000,000 Bytes is the minimum
- size.
- - Config: chunk_size
- - Env Var: RCLONE_B2_CHUNK_SIZE
- - Type: SizeSuffix
- - Default: 96M
- –b2-disable-checksum
- Disable checksums for large (> upload cutoff) files
- - Config: disable_checksum
- - Env Var: RCLONE_B2_DISABLE_CHECKSUM
- - Type: bool
- - Default: false
- –b2-download-url
- Custom endpoint for downloads.
- This is usually set to a Cloudflare CDN URL as Backblaze offers free
- egress for data downloaded through the Cloudflare network. This is
- probably only useful for a public bucket. Leave blank if you want to use
- the endpoint provided by Backblaze.
- - Config: download_url
- - Env Var: RCLONE_B2_DOWNLOAD_URL
- - Type: string
- - Default: ""
- –b2-download-auth-duration
- Time before the authorization token will expire in s or suffix
- ms|s|m|h|d.
- The duration before the download authorization token will expire. The
- minimum value is 1 second. The maximum value is one week.
- - Config: download_auth_duration
- - Env Var: RCLONE_B2_DOWNLOAD_AUTH_DURATION
- - Type: Duration
- - Default: 1w
- –b2-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_B2_ENCODING
- - Type: MultiEncoder
- - Default: Slash,BackSlash,Del,Ctl,InvalidUtf8,Dot
- Box
- Paths are specified as remote:path
- Paths may be as deep as required, eg remote:directory/subdirectory.
- The initial setup for Box involves getting a token from Box which you
- can do either in your browser, or with a config.json downloaded from Box
- to use JWT authentication. rclone config walks you through it.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Box
- \ "box"
- [snip]
- Storage> box
- Box App Client Id - leave blank normally.
- client_id>
- Box App Client Secret - leave blank normally.
- client_secret>
- Box App config.json location
- Leave blank normally.
- Enter a string value. Press Enter for the default ("").
- config_json>
- 'enterprise' or 'user' depending on the type of token being requested.
- Enter a string value. Press Enter for the default ("user").
- box_sub_type>
- Remote config
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine
- y) Yes
- n) No
- y/n> y
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- --------------------
- [remote]
- client_id =
- client_secret =
- token = {"access_token":"XXX","token_type":"bearer","refresh_token":"XXX","expiry":"XXX"}
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- See the remote setup docs for how to set it up on a machine with no
- Internet browser available.
- Note that rclone runs a webserver on your local machine to collect the
- token as returned from Box. This only runs from the moment it opens your
- browser to the moment you get back the verification code. This is on
- http://127.0.0.1:53682/ and this it may require you to unblock it
- temporarily if you are running a host firewall.
- Once configured you can then use rclone like this,
- List directories in top level of your Box
- rclone lsd remote:
- List all the files in your Box
- rclone ls remote:
- To copy a local directory to an Box directory called backup
- rclone copy /home/source remote:backup
- Using rclone with an Enterprise account with SSO
- If you have an “Enterprise” account type with Box with single sign on
- (SSO), you need to create a password to use Box with rclone. This can be
- done at your Enterprise Box account by going to Settings, “Account” Tab,
- and then set the password in the “Authentication” field.
- Once you have done this, you can setup your Enterprise Box account using
- the same procedure detailed above in the, using the password you have
- just set.
- Invalid refresh token
- According to the box docs:
- Each refresh_token is valid for one use in 60 days.
- This means that if you
- - Don’t use the box remote for 60 days
- - Copy the config file with a box refresh token in and use it in two
- places
- - Get an error on a token refresh
- then rclone will return an error which includes the text
- Invalid refresh token.
- To fix this you will need to use oauth2 again to update the refresh
- token. You can use the methods in the remote setup docs, bearing in mind
- that if you use the copy the config file method, you should not use that
- remote on the computer you did the authentication on.
- Here is how to do it.
- $ rclone config
- Current remotes:
- Name Type
- ==== ====
- remote box
- e) Edit existing remote
- n) New remote
- d) Delete remote
- r) Rename remote
- c) Copy remote
- s) Set configuration password
- q) Quit config
- e/n/d/r/c/s/q> e
- Choose a number from below, or type in an existing value
- 1 > remote
- remote> remote
- --------------------
- [remote]
- type = box
- token = {"access_token":"XXX","token_type":"bearer","refresh_token":"XXX","expiry":"2017-07-08T23:40:08.059167677+01:00"}
- --------------------
- Edit remote
- Value "client_id" = ""
- Edit? (y/n)>
- y) Yes
- n) No
- y/n> n
- Value "client_secret" = ""
- Edit? (y/n)>
- y) Yes
- n) No
- y/n> n
- Remote config
- Already have a token - refresh?
- y) Yes
- n) No
- y/n> y
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine
- y) Yes
- n) No
- y/n> y
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- --------------------
- [remote]
- type = box
- token = {"access_token":"YYY","token_type":"bearer","refresh_token":"YYY","expiry":"2017-07-23T12:22:29.259137901+01:00"}
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Modified time and hashes
- Box allows modification times to be set on objects accurate to 1 second.
- These will be used to detect whether objects need syncing or not.
- Box supports SHA1 type hashes, so you can use the --checksum flag.
- Restricted filename characters
- In addition to the default restricted characters set the following
- characters are also replaced:
- Character Value Replacement
- ----------- ------- -------------
- \ 0x5C \
- File names can also not end with the following characters. These only
- get replaced if they are last character in the name:
- Character Value Replacement
- ----------- ------- -------------
- SP 0x20 ␠
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Transfers
- For files above 50MB rclone will use a chunked transfer. Rclone will
- upload up to --transfers chunks at the same time (shared among all the
- multipart uploads). Chunks are buffered in memory and are normally 8MB
- so increasing --transfers will increase memory use.
- Deleting files
- Depending on the enterprise settings for your user, the item will either
- be actually deleted from Box or moved to the trash.
- Standard Options
- Here are the standard options specific to box (Box).
- –box-client-id
- Box App Client Id. Leave blank normally.
- - Config: client_id
- - Env Var: RCLONE_BOX_CLIENT_ID
- - Type: string
- - Default: ""
- –box-client-secret
- Box App Client Secret Leave blank normally.
- - Config: client_secret
- - Env Var: RCLONE_BOX_CLIENT_SECRET
- - Type: string
- - Default: ""
- –box-box-config-file
- Box App config.json location Leave blank normally.
- - Config: box_config_file
- - Env Var: RCLONE_BOX_BOX_CONFIG_FILE
- - Type: string
- - Default: ""
- –box-box-sub-type
- - Config: box_sub_type
- - Env Var: RCLONE_BOX_BOX_SUB_TYPE
- - Type: string
- - Default: “user”
- - Examples:
- - “user”
- - Rclone should act on behalf of a user
- - “enterprise”
- - Rclone should act on behalf of a service account
- Advanced Options
- Here are the advanced options specific to box (Box).
- –box-upload-cutoff
- Cutoff for switching to multipart upload (>= 50MB).
- - Config: upload_cutoff
- - Env Var: RCLONE_BOX_UPLOAD_CUTOFF
- - Type: SizeSuffix
- - Default: 50M
- –box-commit-retries
- Max number of times to try committing a multipart file.
- - Config: commit_retries
- - Env Var: RCLONE_BOX_COMMIT_RETRIES
- - Type: int
- - Default: 100
- –box-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_BOX_ENCODING
- - Type: MultiEncoder
- - Default: Slash,BackSlash,Del,Ctl,RightSpace,InvalidUtf8,Dot
- Limitations
- Note that Box is case insensitive so you can’t have a file called
- “Hello.doc” and one called “hello.doc”.
- Box file names can’t have the \ character in. rclone maps this to and
- from an identical looking unicode equivalent \.
- Box only supports filenames up to 255 characters in length.
- Cache (BETA)
- The cache remote wraps another existing remote and stores file structure
- and its data for long running tasks like rclone mount.
- To get started you just need to have an existing remote which can be
- configured with cache.
- Here is an example of how to make a remote called test-cache. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- r) Rename remote
- c) Copy remote
- s) Set configuration password
- q) Quit config
- n/r/c/s/q> n
- name> test-cache
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Cache a remote
- \ "cache"
- [snip]
- Storage> cache
- Remote to cache.
- Normally should contain a ':' and a path, eg "myremote:path/to/dir",
- "myremote:bucket" or maybe "myremote:" (not recommended).
- remote> local:/test
- Optional: The URL of the Plex server
- plex_url> http://127.0.0.1:32400
- Optional: The username of the Plex user
- plex_username> dummyusername
- Optional: The password of the Plex user
- y) Yes type in my own password
- g) Generate random password
- n) No leave this optional password blank
- y/g/n> y
- Enter the password:
- password:
- Confirm the password:
- password:
- The size of a chunk. Lower value good for slow connections but can affect seamless reading.
- Default: 5M
- Choose a number from below, or type in your own value
- 1 / 1MB
- \ "1m"
- 2 / 5 MB
- \ "5M"
- 3 / 10 MB
- \ "10M"
- chunk_size> 2
- How much time should object info (file size, file hashes etc) be stored in cache. Use a very high value if you don't plan on changing the source FS from outside the cache.
- Accepted units are: "s", "m", "h".
- Default: 5m
- Choose a number from below, or type in your own value
- 1 / 1 hour
- \ "1h"
- 2 / 24 hours
- \ "24h"
- 3 / 24 hours
- \ "48h"
- info_age> 2
- The maximum size of stored chunks. When the storage grows beyond this size, the oldest chunks will be deleted.
- Default: 10G
- Choose a number from below, or type in your own value
- 1 / 500 MB
- \ "500M"
- 2 / 1 GB
- \ "1G"
- 3 / 10 GB
- \ "10G"
- chunk_total_size> 3
- Remote config
- --------------------
- [test-cache]
- remote = local:/test
- plex_url = http://127.0.0.1:32400
- plex_username = dummyusername
- plex_password = *** ENCRYPTED ***
- chunk_size = 5M
- info_age = 48h
- chunk_total_size = 10G
- You can then use it like this,
- List directories in top level of your drive
- rclone lsd test-cache:
- List all the files in your drive
- rclone ls test-cache:
- To start a cached mount
- rclone mount --allow-other test-cache: /var/tmp/test-cache
- Write Features
- Offline uploading
- In an effort to make writing through cache more reliable, the backend
- now supports this feature which can be activated by specifying a
- cache-tmp-upload-path.
- A files goes through these states when using this feature:
- 1. An upload is started (usually by copying a file on the cache remote)
- 2. When the copy to the temporary location is complete the file is part
- of the cached remote and looks and behaves like any other file
- (reading included)
- 3. After cache-tmp-wait-time passes and the file is next in line,
- rclone move is used to move the file to the cloud provider
- 4. Reading the file still works during the upload but most
- modifications on it will be prohibited
- 5. Once the move is complete the file is unlocked for modifications as
- it becomes as any other regular file
- 6. If the file is being read through cache when it’s actually deleted
- from the temporary path then cache will simply swap the source to
- the cloud provider without interrupting the reading (small blip can
- happen though)
- Files are uploaded in sequence and only one file is uploaded at a time.
- Uploads will be stored in a queue and be processed based on the order
- they were added. The queue and the temporary storage is persistent
- across restarts but can be cleared on startup with the --cache-db-purge
- flag.
- Write Support
- Writes are supported through cache. One caveat is that a mounted cache
- remote does not add any retry or fallback mechanism to the upload
- operation. This will depend on the implementation of the wrapped remote.
- Consider using Offline uploading for reliable writes.
- One special case is covered with cache-writes which will cache the file
- data at the same time as the upload when it is enabled making it
- available from the cache store immediately once the upload is finished.
- Read Features
- Multiple connections
- To counter the high latency between a local PC where rclone is running
- and cloud providers, the cache remote can split multiple requests to the
- cloud provider for smaller file chunks and combines them together
- locally where they can be available almost immediately before the reader
- usually needs them.
- This is similar to buffering when media files are played online. Rclone
- will stay around the current marker but always try its best to stay
- ahead and prepare the data before.
- Plex Integration
- There is a direct integration with Plex which allows cache to detect
- during reading if the file is in playback or not. This helps cache to
- adapt how it queries the cloud provider depending on what is needed for.
- Scans will have a minimum amount of workers (1) while in a confirmed
- playback cache will deploy the configured number of workers.
- This integration opens the doorway to additional performance
- improvements which will be explored in the near future.
- NOTE: If Plex options are not configured, cache will function with its
- configured options without adapting any of its settings.
- How to enable? Run rclone config and add all the Plex options (endpoint,
- username and password) in your remote and it will be automatically
- enabled.
- Affected settings: - cache-workers: _Configured value_ during confirmed
- playback or _1_ all the other times
- Certificate Validation
- When the Plex server is configured to only accept secure connections, it
- is possible to use .plex.direct URL’s to ensure certificate validation
- succeeds. These URL’s are used by Plex internally to connect to the Plex
- server securely.
- The format for this URL’s is the following:
- https://ip-with-dots-replaced.server-hash.plex.direct:32400/
- The ip-with-dots-replaced part can be any IPv4 address, where the dots
- have been replaced with dashes, e.g. 127.0.0.1 becomes 127-0-0-1.
- To get the server-hash part, the easiest way is to visit
- https://plex.tv/api/resources?includeHttps=1&X-Plex-Token=your-plex-token
- This page will list all the available Plex servers for your account with
- at least one .plex.direct link for each. Copy one URL and replace the IP
- address with the desired address. This can be used as the plex_url
- value.
- Known issues
- Mount and –dir-cache-time
- –dir-cache-time controls the first layer of directory caching which
- works at the mount layer. Being an independent caching mechanism from
- the cache backend, it will manage its own entries based on the
- configured time.
- To avoid getting in a scenario where dir cache has obsolete data and
- cache would have the correct one, try to set --dir-cache-time to a lower
- time than --cache-info-age. Default values are already configured in
- this way.
- Windows support - Experimental
- There are a couple of issues with Windows mount functionality that still
- require some investigations. It should be considered as experimental
- thus far as fixes come in for this OS.
- Most of the issues seem to be related to the difference between
- filesystems on Linux flavors and Windows as cache is heavily dependant
- on them.
- Any reports or feedback on how cache behaves on this OS is greatly
- appreciated.
- - https://github.com/rclone/rclone/issues/1935
- - https://github.com/rclone/rclone/issues/1907
- - https://github.com/rclone/rclone/issues/1834
- Risk of throttling
- Future iterations of the cache backend will make use of the pooling
- functionality of the cloud provider to synchronize and at the same time
- make writing through it more tolerant to failures.
- There are a couple of enhancements in track to add these but in the
- meantime there is a valid concern that the expiring cache listings can
- lead to cloud provider throttles or bans due to repeated queries on it
- for very large mounts.
- Some recommendations: - don’t use a very small interval for entry
- informations (--cache-info-age) - while writes aren’t yet optimised, you
- can still write through cache which gives you the advantage of adding
- the file in the cache at the same time if configured to do so.
- Future enhancements:
- - https://github.com/rclone/rclone/issues/1937
- - https://github.com/rclone/rclone/issues/1936
- cache and crypt
- One common scenario is to keep your data encrypted in the cloud provider
- using the crypt remote. crypt uses a similar technique to wrap around an
- existing remote and handles this translation in a seamless way.
- There is an issue with wrapping the remotes in this order: CLOUD REMOTE
- -> CRYPT -> CACHE
- During testing, I experienced a lot of bans with the remotes in this
- order. I suspect it might be related to how crypt opens files on the
- cloud provider which makes it think we’re downloading the full file
- instead of small chunks. Organizing the remotes in this order yields
- better results: CLOUD REMOTE -> CACHE -> CRYPT
- absolute remote paths
- cache can not differentiate between relative and absolute paths for the
- wrapped remote. Any path given in the remote config setting and on the
- command line will be passed to the wrapped remote as is, but for storing
- the chunks on disk the path will be made relative by removing any
- leading / character.
- This behavior is irrelevant for most backend types, but there are
- backends where a leading / changes the effective directory, e.g. in the
- sftp backend paths starting with a / are relative to the root of the SSH
- server and paths without are relative to the user home directory. As a
- result sftp:bin and sftp:/bin will share the same cache folder, even if
- they represent a different directory on the SSH server.
- Cache and Remote Control (–rc)
- Cache supports the new --rc mode in rclone and can be remote controlled
- through the following end points: By default, the listener is disabled
- if you do not add the flag.
- rc cache/expire
- Purge a remote from the cache backend. Supports either a directory or a
- file. It supports both encrypted and unencrypted file names if cache is
- wrapped by crypt.
- Params: - REMOTE = path to remote (REQUIRED) - WITHDATA = true/false to
- delete cached data (chunks) as well _(optional, false by default)_
- Standard Options
- Here are the standard options specific to cache (Cache a remote).
- –cache-remote
- Remote to cache. Normally should contain a ‘:’ and a path, eg
- “myremote:path/to/dir”, “myremote:bucket” or maybe “myremote:” (not
- recommended).
- - Config: remote
- - Env Var: RCLONE_CACHE_REMOTE
- - Type: string
- - Default: ""
- –cache-plex-url
- The URL of the Plex server
- - Config: plex_url
- - Env Var: RCLONE_CACHE_PLEX_URL
- - Type: string
- - Default: ""
- –cache-plex-username
- The username of the Plex user
- - Config: plex_username
- - Env Var: RCLONE_CACHE_PLEX_USERNAME
- - Type: string
- - Default: ""
- –cache-plex-password
- The password of the Plex user
- - Config: plex_password
- - Env Var: RCLONE_CACHE_PLEX_PASSWORD
- - Type: string
- - Default: ""
- –cache-chunk-size
- The size of a chunk (partial file data).
- Use lower numbers for slower connections. If the chunk size is changed,
- any downloaded chunks will be invalid and cache-chunk-path will need to
- be cleared or unexpected EOF errors will occur.
- - Config: chunk_size
- - Env Var: RCLONE_CACHE_CHUNK_SIZE
- - Type: SizeSuffix
- - Default: 5M
- - Examples:
- - “1m”
- - 1MB
- - “5M”
- - 5 MB
- - “10M”
- - 10 MB
- –cache-info-age
- How long to cache file structure information (directory listings, file
- size, times etc). If all write operations are done through the cache
- then you can safely make this value very large as the cache store will
- also be updated in real time.
- - Config: info_age
- - Env Var: RCLONE_CACHE_INFO_AGE
- - Type: Duration
- - Default: 6h0m0s
- - Examples:
- - “1h”
- - 1 hour
- - “24h”
- - 24 hours
- - “48h”
- - 48 hours
- –cache-chunk-total-size
- The total size that the chunks can take up on the local disk.
- If the cache exceeds this value then it will start to delete the oldest
- chunks until it goes under this value.
- - Config: chunk_total_size
- - Env Var: RCLONE_CACHE_CHUNK_TOTAL_SIZE
- - Type: SizeSuffix
- - Default: 10G
- - Examples:
- - “500M”
- - 500 MB
- - “1G”
- - 1 GB
- - “10G”
- - 10 GB
- Advanced Options
- Here are the advanced options specific to cache (Cache a remote).
- –cache-plex-token
- The plex token for authentication - auto set normally
- - Config: plex_token
- - Env Var: RCLONE_CACHE_PLEX_TOKEN
- - Type: string
- - Default: ""
- –cache-plex-insecure
- Skip all certificate verifications when connecting to the Plex server
- - Config: plex_insecure
- - Env Var: RCLONE_CACHE_PLEX_INSECURE
- - Type: string
- - Default: ""
- –cache-db-path
- Directory to store file structure metadata DB. The remote name is used
- as the DB file name.
- - Config: db_path
- - Env Var: RCLONE_CACHE_DB_PATH
- - Type: string
- - Default: “$HOME/.cache/rclone/cache-backend”
- –cache-chunk-path
- Directory to cache chunk files.
- Path to where partial file data (chunks) are stored locally. The remote
- name is appended to the final path.
- This config follows the “–cache-db-path”. If you specify a custom
- location for “–cache-db-path” and don’t specify one for
- “–cache-chunk-path” then “–cache-chunk-path” will use the same path as
- “–cache-db-path”.
- - Config: chunk_path
- - Env Var: RCLONE_CACHE_CHUNK_PATH
- - Type: string
- - Default: “$HOME/.cache/rclone/cache-backend”
- –cache-db-purge
- Clear all the cached data for this remote on start.
- - Config: db_purge
- - Env Var: RCLONE_CACHE_DB_PURGE
- - Type: bool
- - Default: false
- –cache-chunk-clean-interval
- How often should the cache perform cleanups of the chunk storage. The
- default value should be ok for most people. If you find that the cache
- goes over “cache-chunk-total-size” too often then try to lower this
- value to force it to perform cleanups more often.
- - Config: chunk_clean_interval
- - Env Var: RCLONE_CACHE_CHUNK_CLEAN_INTERVAL
- - Type: Duration
- - Default: 1m0s
- –cache-read-retries
- How many times to retry a read from a cache storage.
- Since reading from a cache stream is independent from downloading file
- data, readers can get to a point where there’s no more data in the
- cache. Most of the times this can indicate a connectivity issue if cache
- isn’t able to provide file data anymore.
- For really slow connections, increase this to a point where the stream
- is able to provide data but your experience will be very stuttering.
- - Config: read_retries
- - Env Var: RCLONE_CACHE_READ_RETRIES
- - Type: int
- - Default: 10
- –cache-workers
- How many workers should run in parallel to download chunks.
- Higher values will mean more parallel processing (better CPU needed) and
- more concurrent requests on the cloud provider. This impacts several
- aspects like the cloud provider API limits, more stress on the hardware
- that rclone runs on but it also means that streams will be more fluid
- and data will be available much more faster to readers.
- NOTE: If the optional Plex integration is enabled then this setting will
- adapt to the type of reading performed and the value specified here will
- be used as a maximum number of workers to use.
- - Config: workers
- - Env Var: RCLONE_CACHE_WORKERS
- - Type: int
- - Default: 4
- –cache-chunk-no-memory
- Disable the in-memory cache for storing chunks during streaming.
- By default, cache will keep file data during streaming in RAM as well to
- provide it to readers as fast as possible.
- This transient data is evicted as soon as it is read and the number of
- chunks stored doesn’t exceed the number of workers. However, depending
- on other settings like “cache-chunk-size” and “cache-workers” this
- footprint can increase if there are parallel streams too (multiple files
- being read at the same time).
- If the hardware permits it, use this feature to provide an overall
- better performance during streaming but it can also be disabled if RAM
- is not available on the local machine.
- - Config: chunk_no_memory
- - Env Var: RCLONE_CACHE_CHUNK_NO_MEMORY
- - Type: bool
- - Default: false
- –cache-rps
- Limits the number of requests per second to the source FS (-1 to
- disable)
- This setting places a hard limit on the number of requests per second
- that cache will be doing to the cloud provider remote and try to respect
- that value by setting waits between reads.
- If you find that you’re getting banned or limited on the cloud provider
- through cache and know that a smaller number of requests per second will
- allow you to work with it then you can use this setting for that.
- A good balance of all the other settings should make this setting
- useless but it is available to set for more special cases.
- NOTE: This will limit the number of requests during streams but other
- API calls to the cloud provider like directory listings will still pass.
- - Config: rps
- - Env Var: RCLONE_CACHE_RPS
- - Type: int
- - Default: -1
- –cache-writes
- Cache file data on writes through the FS
- If you need to read files immediately after you upload them through
- cache you can enable this flag to have their data stored in the cache
- store at the same time during upload.
- - Config: writes
- - Env Var: RCLONE_CACHE_WRITES
- - Type: bool
- - Default: false
- –cache-tmp-upload-path
- Directory to keep temporary files until they are uploaded.
- This is the path where cache will use as a temporary storage for new
- files that need to be uploaded to the cloud provider.
- Specifying a value will enable this feature. Without it, it is
- completely disabled and files will be uploaded directly to the cloud
- provider
- - Config: tmp_upload_path
- - Env Var: RCLONE_CACHE_TMP_UPLOAD_PATH
- - Type: string
- - Default: ""
- –cache-tmp-wait-time
- How long should files be stored in local cache before being uploaded
- This is the duration that a file must wait in the temporary location
- _cache-tmp-upload-path_ before it is selected for upload.
- Note that only one file is uploaded at a time and it can take longer to
- start the upload if a queue formed for this purpose.
- - Config: tmp_wait_time
- - Env Var: RCLONE_CACHE_TMP_WAIT_TIME
- - Type: Duration
- - Default: 15s
- –cache-db-wait-time
- How long to wait for the DB to be available - 0 is unlimited
- Only one process can have the DB open at any one time, so rclone waits
- for this duration for the DB to become available before it gives an
- error.
- If you set it to 0 then it will wait forever.
- - Config: db_wait_time
- - Env Var: RCLONE_CACHE_DB_WAIT_TIME
- - Type: Duration
- - Default: 1s
- Chunker (BETA)
- The chunker overlay transparently splits large files into smaller chunks
- during upload to wrapped remote and transparently assembles them back
- when the file is downloaded. This allows to effectively overcome size
- limits imposed by storage providers.
- To use it, first set up the underlying remote following the
- configuration instructions for that remote. You can also use a local
- pathname instead of a remote.
- First check your chosen remote is working - we’ll call it remote:path
- here. Note that anything inside remote:path will be chunked and anything
- outside won’t. This means that if you are using a bucket based remote
- (eg S3, B2, swift) then you should probably put the bucket in the remote
- s3:bucket.
- Now configure chunker using rclone config. We will call this one overlay
- to separate it from the remote itself.
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> overlay
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Transparently chunk/split large files
- \ "chunker"
- [snip]
- Storage> chunker
- Remote to chunk/unchunk.
- Normally should contain a ':' and a path, eg "myremote:path/to/dir",
- "myremote:bucket" or maybe "myremote:" (not recommended).
- Enter a string value. Press Enter for the default ("").
- remote> remote:path
- Files larger than chunk size will be split in chunks.
- Enter a size with suffix k,M,G,T. Press Enter for the default ("2G").
- chunk_size> 100M
- Choose how chunker handles hash sums. All modes but "none" require metadata.
- Enter a string value. Press Enter for the default ("md5").
- Choose a number from below, or type in your own value
- 1 / Pass any hash supported by wrapped remote for non-chunked files, return nothing otherwise
- \ "none"
- 2 / MD5 for composite files
- \ "md5"
- 3 / SHA1 for composite files
- \ "sha1"
- 4 / MD5 for all files
- \ "md5all"
- 5 / SHA1 for all files
- \ "sha1all"
- 6 / Copying a file to chunker will request MD5 from the source falling back to SHA1 if unsupported
- \ "md5quick"
- 7 / Similar to "md5quick" but prefers SHA1 over MD5
- \ "sha1quick"
- hash_type> md5
- Edit advanced config? (y/n)
- y) Yes
- n) No
- y/n> n
- Remote config
- --------------------
- [overlay]
- type = chunker
- remote = remote:bucket
- chunk_size = 100M
- hash_type = md5
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Specifying the remote
- In normal use, make sure the remote has a : in. If you specify the
- remote without a : then rclone will use a local directory of that name.
- So if you use a remote of /path/to/secret/files then rclone will chunk
- stuff in that directory. If you use a remote of name then rclone will
- put files in a directory called name in the current directory.
- Chunking
- When rclone starts a file upload, chunker checks the file size. If it
- doesn’t exceed the configured chunk size, chunker will just pass the
- file to the wrapped remote. If a file is large, chunker will
- transparently cut data in pieces with temporary names and stream them
- one by one, on the fly. Each data chunk will contain the specified
- number of bytes, except for the last one which may have less data. If
- file size is unknown in advance (this is called a streaming upload),
- chunker will internally create a temporary copy, record its size and
- repeat the above process.
- When upload completes, temporary chunk files are finally renamed. This
- scheme guarantees that operations can be run in parallel and look from
- outside as atomic. A similar method with hidden temporary chunks is used
- for other operations (copy/move/rename etc). If an operation fails,
- hidden chunks are normally destroyed, and the target composite file
- stays intact.
- When a composite file download is requested, chunker transparently
- assembles it by concatenating data chunks in order. As the split is
- trivial one could even manually concatenate data chunks together to
- obtain the original content.
- When the list rclone command scans a directory on wrapped remote, the
- potential chunk files are accounted for, grouped and assembled into
- composite directory entries. Any temporary chunks are hidden.
- List and other commands can sometimes come across composite files with
- missing or invalid chunks, eg. shadowed by like-named directory or
- another file. This usually means that wrapped file system has been
- directly tampered with or damaged. If chunker detects a missing chunk it
- will by default print warning, skip the whole incomplete group of chunks
- but proceed with current command. You can set the --chunker-fail-hard
- flag to have commands abort with error message in such cases.
- Chunk names
- The default chunk name format is *.rclone_chunk.###, hence by default
- chunk names are BIG_FILE_NAME.rclone_chunk.001,
- BIG_FILE_NAME.rclone_chunk.002 etc. You can configure another name
- format using the name_format configuration file option. The format uses
- asterisk * as a placeholder for the base file name and one or more
- consecutive hash characters # as a placeholder for sequential chunk
- number. There must be one and only one asterisk. The number of
- consecutive hash characters defines the minimum length of a string
- representing a chunk number. If decimal chunk number has less digits
- than the number of hashes, it is left-padded by zeros. If the decimal
- string is longer, it is left intact. By default numbering starts from 1
- but there is another option that allows user to start from 0, eg. for
- compatibility with legacy software.
- For example, if name format is big_*-##.part and original file name is
- data.txt and numbering starts from 0, then the first chunk will be named
- big_data.txt-00.part, the 99th chunk will be big_data.txt-98.part and
- the 302nd chunk will become big_data.txt-301.part.
- Note that list assembles composite directory entries only when chunk
- names match the configured format and treats non-conforming file names
- as normal non-chunked files.
- Metadata
- Besides data chunks chunker will by default create metadata object for a
- composite file. The object is named after the original file. Chunker
- allows user to disable metadata completely (the none format). Note that
- metadata is normally not created for files smaller than the configured
- chunk size. This may change in future rclone releases.
- Simple JSON metadata format
- This is the default format. It supports hash sums and chunk validation
- for composite files. Meta objects carry the following fields:
- - ver - version of format, currently 1
- - size - total size of composite file
- - nchunks - number of data chunks in file
- - md5 - MD5 hashsum of composite file (if present)
- - sha1 - SHA1 hashsum (if present)
- There is no field for composite file name as it’s simply equal to the
- name of meta object on the wrapped remote. Please refer to respective
- sections for details on hashsums and modified time handling.
- No metadata
- You can disable meta objects by setting the meta format option to none.
- In this mode chunker will scan directory for all files that follow
- configured chunk name format, group them by detecting chunks with the
- same base name and show group names as virtual composite files. This
- method is more prone to missing chunk errors (especially missing last
- chunk) than format with metadata enabled.
- Hashsums
- Chunker supports hashsums only when a compatible metadata is present.
- Hence, if you choose metadata format of none, chunker will report
- hashsum as UNSUPPORTED.
- Please note that by default metadata is stored only for composite files.
- If a file is smaller than configured chunk size, chunker will
- transparently redirect hash requests to wrapped remote, so support
- depends on that. You will see the empty string as a hashsum of requested
- type for small files if the wrapped remote doesn’t support it.
- Many storage backends support MD5 and SHA1 hash types, so does chunker.
- With chunker you can choose one or another but not both. MD5 is set by
- default as the most supported type. Since chunker keeps hashes for
- composite files and falls back to the wrapped remote hash for
- non-chunked ones, we advise you to choose the same hash type as
- supported by wrapped remote so that your file listings look coherent.
- If your storage backend does not support MD5 or SHA1 but you need
- consistent file hashing, configure chunker with md5all or sha1all. These
- two modes guarantee given hash for all files. If wrapped remote doesn’t
- support it, chunker will then add metadata to all files, even small.
- However, this can double the amount of small files in storage and incur
- additional service charges. You can even use chunker to force md5/sha1
- support in any other remote at expence of sidecar meta objects by
- setting eg. chunk_type=sha1all to force hashsums and chunk_size=1P to
- effectively disable chunking.
- Normally, when a file is copied to chunker controlled remote, chunker
- will ask the file source for compatible file hash and revert to
- on-the-fly calculation if none is found. This involves some CPU overhead
- but provides a guarantee that given hashsum is available. Also, chunker
- will reject a server-side copy or move operation if source and
- destination hashsum types are different resulting in the extra network
- bandwidth, too. In some rare cases this may be undesired, so chunker
- provides two optional choices: sha1quick and md5quick. If the source
- does not support primary hash type and the quick mode is enabled,
- chunker will try to fall back to the secondary type. This will save CPU
- and bandwidth but can result in empty hashsums at destination. Beware of
- consequences: the sync command will revert (sometimes silently) to
- time/size comparison if compatible hashsums between source and target
- are not found.
- Modified time
- Chunker stores modification times using the wrapped remote so support
- depends on that. For a small non-chunked file the chunker overlay simply
- manipulates modification time of the wrapped remote file. For a
- composite file with metadata chunker will get and set modification time
- of the metadata object on the wrapped remote. If file is chunked but
- metadata format is none then chunker will use modification time of the
- first data chunk.
- Migrations
- The idiomatic way to migrate to a different chunk size, hash type or
- chunk naming scheme is to:
- - Collect all your chunked files under a directory and have your
- chunker remote point to it.
- - Create another directory (most probably on the same cloud storage)
- and configure a new remote with desired metadata format, hash type,
- chunk naming etc.
- - Now run rclone sync oldchunks: newchunks: and all your data will be
- transparently converted in transfer. This may take some time, yet
- chunker will try server-side copy if possible.
- - After checking data integrity you may remove configuration section
- of the old remote.
- If rclone gets killed during a long operation on a big composite file,
- hidden temporary chunks may stay in the directory. They will not be
- shown by the list command but will eat up your account quota. Please
- note that the deletefile command deletes only active chunks of a file.
- As a workaround, you can use remote of the wrapped file system to see
- them. An easy way to get rid of hidden garbage is to copy littered
- directory somewhere using the chunker remote and purge the original
- directory. The copy command will copy only active chunks while the purge
- will remove everything including garbage.
- Caveats and Limitations
- Chunker requires wrapped remote to support server side move (or copy +
- delete) operations, otherwise it will explicitly refuse to start. This
- is because it internally renames temporary chunk files to their final
- names when an operation completes successfully.
- Chunker encodes chunk number in file name, so with default name_format
- setting it adds 17 characters. Also chunker adds 7 characters of
- temporary suffix during operations. Many file systems limit base file
- name without path by 255 characters. Using rclone’s crypt remote as a
- base file system limits file name by 143 characters. Thus, maximum name
- length is 231 for most files and 119 for chunker-over-crypt. A user in
- need can change name format to eg. *.rcc## and save 10 characters
- (provided at most 99 chunks per file).
- Note that a move implemented using the copy-and-delete method may incur
- double charging with some cloud storage providers.
- Chunker will not automatically rename existing chunks when you run
- rclone config on a live remote and change the chunk name format. Beware
- that in result of this some files which have been treated as chunks
- before the change can pop up in directory listings as normal files and
- vice versa. The same warning holds for the chunk size. If you
- desperately need to change critical chunking setings, you should run
- data migration as described above.
- If wrapped remote is case insensitive, the chunker overlay will inherit
- that property (so you can’t have a file called “Hello.doc” and
- “hello.doc” in the same directory).
- Standard Options
- Here are the standard options specific to chunker (Transparently
- chunk/split large files).
- –chunker-remote
- Remote to chunk/unchunk. Normally should contain a ‘:’ and a path, eg
- “myremote:path/to/dir”, “myremote:bucket” or maybe “myremote:” (not
- recommended).
- - Config: remote
- - Env Var: RCLONE_CHUNKER_REMOTE
- - Type: string
- - Default: ""
- –chunker-chunk-size
- Files larger than chunk size will be split in chunks.
- - Config: chunk_size
- - Env Var: RCLONE_CHUNKER_CHUNK_SIZE
- - Type: SizeSuffix
- - Default: 2G
- –chunker-hash-type
- Choose how chunker handles hash sums. All modes but “none” require
- metadata.
- - Config: hash_type
- - Env Var: RCLONE_CHUNKER_HASH_TYPE
- - Type: string
- - Default: “md5”
- - Examples:
- - “none”
- - Pass any hash supported by wrapped remote for non-chunked
- files, return nothing otherwise
- - “md5”
- - MD5 for composite files
- - “sha1”
- - SHA1 for composite files
- - “md5all”
- - MD5 for all files
- - “sha1all”
- - SHA1 for all files
- - “md5quick”
- - Copying a file to chunker will request MD5 from the source
- falling back to SHA1 if unsupported
- - “sha1quick”
- - Similar to “md5quick” but prefers SHA1 over MD5
- Advanced Options
- Here are the advanced options specific to chunker (Transparently
- chunk/split large files).
- –chunker-name-format
- String format of chunk file names. The two placeholders are: base file
- name (*) and chunk number (#…). There must be one and only one asterisk
- and one or more consecutive hash characters. If chunk number has less
- digits than the number of hashes, it is left-padded by zeros. If there
- are more digits in the number, they are left as is. Possible chunk files
- are ignored if their name does not match given format.
- - Config: name_format
- - Env Var: RCLONE_CHUNKER_NAME_FORMAT
- - Type: string
- - Default: "*.rclone_chunk.###"
- –chunker-start-from
- Minimum valid chunk number. Usually 0 or 1. By default chunk numbers
- start from 1.
- - Config: start_from
- - Env Var: RCLONE_CHUNKER_START_FROM
- - Type: int
- - Default: 1
- –chunker-meta-format
- Format of the metadata object or “none”. By default “simplejson”.
- Metadata is a small JSON file named after the composite file.
- - Config: meta_format
- - Env Var: RCLONE_CHUNKER_META_FORMAT
- - Type: string
- - Default: “simplejson”
- - Examples:
- - “none”
- - Do not use metadata files at all. Requires hash type “none”.
- - “simplejson”
- - Simple JSON supports hash sums and chunk validation.
- - It has the following fields: ver, size, nchunks, md5, sha1.
- –chunker-fail-hard
- Choose how chunker should handle files with missing or invalid chunks.
- - Config: fail_hard
- - Env Var: RCLONE_CHUNKER_FAIL_HARD
- - Type: bool
- - Default: false
- - Examples:
- - “true”
- - Report errors and abort current command.
- - “false”
- - Warn user, skip incomplete file and proceed.
- Citrix ShareFile
- Citrix ShareFile is a secure file sharing and transfer service aimed as
- business.
- The initial setup for Citrix ShareFile involves getting a token from
- Citrix ShareFile which you can in your browser. rclone config walks you
- through it.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- XX / Citrix Sharefile
- \ "sharefile"
- Storage> sharefile
- ** See help for sharefile backend at: https://rclone.org/sharefile/ **
- ID of the root folder
- Leave blank to access "Personal Folders". You can use one of the
- standard values here or any folder ID (long hex number ID).
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- 1 / Access the Personal Folders. (Default)
- \ ""
- 2 / Access the Favorites folder.
- \ "favorites"
- 3 / Access all the shared folders.
- \ "allshared"
- 4 / Access all the individual connectors.
- \ "connectors"
- 5 / Access the home, favorites, and shared folders as well as the connectors.
- \ "top"
- root_folder_id>
- Edit advanced config? (y/n)
- y) Yes
- n) No
- y/n> n
- Remote config
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine
- y) Yes
- n) No
- y/n> y
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=XXX
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- --------------------
- [remote]
- type = sharefile
- endpoint = https://XXX.sharefile.com
- token = {"access_token":"XXX","token_type":"bearer","refresh_token":"XXX","expiry":"2019-09-30T19:41:45.878561877+01:00"}
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- See the remote setup docs for how to set it up on a machine with no
- Internet browser available.
- Note that rclone runs a webserver on your local machine to collect the
- token as returned from Citrix ShareFile. This only runs from the moment
- it opens your browser to the moment you get back the verification code.
- This is on http://127.0.0.1:53682/ and this it may require you to
- unblock it temporarily if you are running a host firewall.
- Once configured you can then use rclone like this,
- List directories in top level of your ShareFile
- rclone lsd remote:
- List all the files in your ShareFile
- rclone ls remote:
- To copy a local directory to an ShareFile directory called backup
- rclone copy /home/source remote:backup
- Paths may be as deep as required, eg remote:directory/subdirectory.
- Modified time and hashes
- ShareFile allows modification times to be set on objects accurate to 1
- second. These will be used to detect whether objects need syncing or
- not.
- ShareFile supports MD5 type hashes, so you can use the --checksum flag.
- Transfers
- For files above 128MB rclone will use a chunked transfer. Rclone will
- upload up to --transfers chunks at the same time (shared among all the
- multipart uploads). Chunks are buffered in memory and are normally 64MB
- so increasing --transfers will increase memory use.
- Limitations
- Note that ShareFile is case insensitive so you can’t have a file called
- “Hello.doc” and one called “hello.doc”.
- ShareFile only supports filenames up to 256 characters in length.
- Restricted filename characters
- In addition to the default restricted characters set the following
- characters are also replaced:
- Character Value Replacement
- ----------- ------- -------------
- \ 0x5C \
- * 0x2A *
- < 0x3C <
- > 0x3E >
- ? 0x3F ?
- : 0x3A :
- | 0x7C |
- " 0x22 "
- File names can also not start or end with the following characters.
- These only get replaced if they are first or last character in the name:
- Character Value Replacement
- ----------- ------- -------------
- SP 0x20 ␠
- . 0x2E .
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Standard Options
- Here are the standard options specific to sharefile (Citrix Sharefile).
- –sharefile-root-folder-id
- ID of the root folder
- Leave blank to access “Personal Folders”. You can use one of the
- standard values here or any folder ID (long hex number ID).
- - Config: root_folder_id
- - Env Var: RCLONE_SHAREFILE_ROOT_FOLDER_ID
- - Type: string
- - Default: ""
- - Examples:
- - ""
- - Access the Personal Folders. (Default)
- - “favorites”
- - Access the Favorites folder.
- - “allshared”
- - Access all the shared folders.
- - “connectors”
- - Access all the individual connectors.
- - “top”
- - Access the home, favorites, and shared folders as well as
- the connectors.
- Advanced Options
- Here are the advanced options specific to sharefile (Citrix Sharefile).
- –sharefile-upload-cutoff
- Cutoff for switching to multipart upload.
- - Config: upload_cutoff
- - Env Var: RCLONE_SHAREFILE_UPLOAD_CUTOFF
- - Type: SizeSuffix
- - Default: 128M
- –sharefile-chunk-size
- Upload chunk size. Must a power of 2 >= 256k.
- Making this larger will improve performance, but note that each chunk is
- buffered in memory one per transfer.
- Reducing this will reduce memory usage but decrease performance.
- - Config: chunk_size
- - Env Var: RCLONE_SHAREFILE_CHUNK_SIZE
- - Type: SizeSuffix
- - Default: 64M
- –sharefile-endpoint
- Endpoint for API calls.
- This is usually auto discovered as part of the oauth process, but can be
- set manually to something like: https://XXX.sharefile.com
- - Config: endpoint
- - Env Var: RCLONE_SHAREFILE_ENDPOINT
- - Type: string
- - Default: ""
- –sharefile-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_SHAREFILE_ENCODING
- - Type: MultiEncoder
- - Default:
- Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,Ctl,LeftSpace,LeftPeriod,RightSpace,RightPeriod,InvalidUtf8,Dot
- Crypt
- The crypt remote encrypts and decrypts another remote.
- To use it first set up the underlying remote following the config
- instructions for that remote. You can also use a local pathname instead
- of a remote which will encrypt and decrypt from that directory which
- might be useful for encrypting onto a USB stick for example.
- First check your chosen remote is working - we’ll call it remote:path in
- these docs. Note that anything inside remote:path will be encrypted and
- anything outside won’t. This means that if you are using a bucket based
- remote (eg S3, B2, swift) then you should probably put the bucket in the
- remote s3:bucket. If you just use s3: then rclone will make encrypted
- bucket names too (if using file name encryption) which may or may not be
- what you want.
- Now configure crypt using rclone config. We will call this one secret to
- differentiate it from the remote.
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> secret
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Encrypt/Decrypt a remote
- \ "crypt"
- [snip]
- Storage> crypt
- Remote to encrypt/decrypt.
- Normally should contain a ':' and a path, eg "myremote:path/to/dir",
- "myremote:bucket" or maybe "myremote:" (not recommended).
- remote> remote:path
- How to encrypt the filenames.
- Choose a number from below, or type in your own value
- 1 / Don't encrypt the file names. Adds a ".bin" extension only.
- \ "off"
- 2 / Encrypt the filenames see the docs for the details.
- \ "standard"
- 3 / Very simple filename obfuscation.
- \ "obfuscate"
- filename_encryption> 2
- Option to either encrypt directory names or leave them intact.
- Choose a number from below, or type in your own value
- 1 / Encrypt directory names.
- \ "true"
- 2 / Don't encrypt directory names, leave them intact.
- \ "false"
- filename_encryption> 1
- Password or pass phrase for encryption.
- y) Yes type in my own password
- g) Generate random password
- y/g> y
- Enter the password:
- password:
- Confirm the password:
- password:
- Password or pass phrase for salt. Optional but recommended.
- Should be different to the previous password.
- y) Yes type in my own password
- g) Generate random password
- n) No leave this optional password blank
- y/g/n> g
- Password strength in bits.
- 64 is just about memorable
- 128 is secure
- 1024 is the maximum
- Bits> 128
- Your password is: JAsJvRcgR-_veXNfy_sGmQ
- Use this password?
- y) Yes
- n) No
- y/n> y
- Remote config
- --------------------
- [secret]
- remote = remote:path
- filename_encryption = standard
- password = *** ENCRYPTED ***
- password2 = *** ENCRYPTED ***
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- IMPORTANT The password is stored in the config file is lightly obscured
- so it isn’t immediately obvious what it is. It is in no way secure
- unless you use config file encryption.
- A long passphrase is recommended, or you can use a random one. Note that
- if you reconfigure rclone with the same passwords/passphrases elsewhere
- it will be compatible - all the secrets used are derived from those two
- passwords/passphrases.
- Note that rclone does not encrypt
- - file length - this can be calcuated within 16 bytes
- - modification time - used for syncing
- Specifying the remote
- In normal use, make sure the remote has a : in. If you specify the
- remote without a : then rclone will use a local directory of that name.
- So if you use a remote of /path/to/secret/files then rclone will encrypt
- stuff to that directory. If you use a remote of name then rclone will
- put files in a directory called name in the current directory.
- If you specify the remote as remote:path/to/dir then rclone will store
- encrypted files in path/to/dir on the remote. If you are using file name
- encryption, then when you save files to secret:subdir/subfile this will
- store them in the unencrypted path path/to/dir but the subdir/subpath
- bit will be encrypted.
- Note that unless you want encrypted bucket names (which are difficult to
- manage because you won’t know what directory they represent in web
- interfaces etc), you should probably specify a bucket, eg
- remote:secretbucket when using bucket based remotes such as S3, Swift,
- Hubic, B2, GCS.
- Example
- To test I made a little directory of files using “standard” file name
- encryption.
- plaintext/
- ├── file0.txt
- ├── file1.txt
- └── subdir
- ├── file2.txt
- ├── file3.txt
- └── subsubdir
- └── file4.txt
- Copy these to the remote and list them back
- $ rclone -q copy plaintext secret:
- $ rclone -q ls secret:
- 7 file1.txt
- 6 file0.txt
- 8 subdir/file2.txt
- 10 subdir/subsubdir/file4.txt
- 9 subdir/file3.txt
- Now see what that looked like when encrypted
- $ rclone -q ls remote:path
- 55 hagjclgavj2mbiqm6u6cnjjqcg
- 54 v05749mltvv1tf4onltun46gls
- 57 86vhrsv86mpbtd3a0akjuqslj8/dlj7fkq4kdq72emafg7a7s41uo
- 58 86vhrsv86mpbtd3a0akjuqslj8/7uu829995du6o42n32otfhjqp4/b9pausrfansjth5ob3jkdqd4lc
- 56 86vhrsv86mpbtd3a0akjuqslj8/8njh1sk437gttmep3p70g81aps
- Note that this retains the directory structure which means you can do
- this
- $ rclone -q ls secret:subdir
- 8 file2.txt
- 9 file3.txt
- 10 subsubdir/file4.txt
- If don’t use file name encryption then the remote will look like this -
- note the .bin extensions added to prevent the cloud provider attempting
- to interpret the data.
- $ rclone -q ls remote:path
- 54 file0.txt.bin
- 57 subdir/file3.txt.bin
- 56 subdir/file2.txt.bin
- 58 subdir/subsubdir/file4.txt.bin
- 55 file1.txt.bin
- File name encryption modes
- Here are some of the features of the file name encryption modes
- Off
- - doesn’t hide file names or directory structure
- - allows for longer file names (~246 characters)
- - can use sub paths and copy single files
- Standard
- - file names encrypted
- - file names can’t be as long (~143 characters)
- - can use sub paths and copy single files
- - directory structure visible
- - identical files names will have identical uploaded names
- - can use shortcuts to shorten the directory recursion
- Obfuscation
- This is a simple “rotate” of the filename, with each file having a rot
- distance based on the filename. We store the distance at the beginning
- of the filename. So a file called “hello” may become “53.jgnnq”
- This is not a strong encryption of filenames, but it may stop automated
- scanning tools from picking up on filename patterns. As such it’s an
- intermediate between “off” and “standard”. The advantage is that it
- allows for longer path segment names.
- There is a possibility with some unicode based filenames that the
- obfuscation is weak and may map lower case characters to upper case
- equivalents. You can not rely on this for strong protection.
- - file names very lightly obfuscated
- - file names can be longer than standard encryption
- - can use sub paths and copy single files
- - directory structure visible
- - identical files names will have identical uploaded names
- Cloud storage systems have various limits on file name length and total
- path length which you are more likely to hit using “Standard” file name
- encryption. If you keep your file names to below 156 characters in
- length then you should be OK on all providers.
- There may be an even more secure file name encryption mode in the future
- which will address the long file name problem.
- Directory name encryption
- Crypt offers the option of encrypting dir names or leaving them intact.
- There are two options:
- True
- Encrypts the whole file path including directory names Example:
- 1/12/123.txt is encrypted to
- p0e52nreeaj0a5ea7s64m4j72s/l42g6771hnv3an9cgc8cr2n1ng/qgm4avr35m5loi1th53ato71v0
- False
- Only encrypts file names, skips directory names Example: 1/12/123.txt is
- encrypted to 1/12/qgm4avr35m5loi1th53ato71v0
- Modified time and hashes
- Crypt stores modification times using the underlying remote so support
- depends on that.
- Hashes are not stored for crypt. However the data integrity is protected
- by an extremely strong crypto authenticator.
- Note that you should use the rclone cryptcheck command to check the
- integrity of a crypted remote instead of rclone check which can’t check
- the checksums properly.
- Standard Options
- Here are the standard options specific to crypt (Encrypt/Decrypt a
- remote).
- –crypt-remote
- Remote to encrypt/decrypt. Normally should contain a ‘:’ and a path, eg
- “myremote:path/to/dir”, “myremote:bucket” or maybe “myremote:” (not
- recommended).
- - Config: remote
- - Env Var: RCLONE_CRYPT_REMOTE
- - Type: string
- - Default: ""
- –crypt-filename-encryption
- How to encrypt the filenames.
- - Config: filename_encryption
- - Env Var: RCLONE_CRYPT_FILENAME_ENCRYPTION
- - Type: string
- - Default: “standard”
- - Examples:
- - “standard”
- - Encrypt the filenames see the docs for the details.
- - “obfuscate”
- - Very simple filename obfuscation.
- - “off”
- - Don’t encrypt the file names. Adds a “.bin” extension only.
- –crypt-directory-name-encryption
- Option to either encrypt directory names or leave them intact.
- - Config: directory_name_encryption
- - Env Var: RCLONE_CRYPT_DIRECTORY_NAME_ENCRYPTION
- - Type: bool
- - Default: true
- - Examples:
- - “true”
- - Encrypt directory names.
- - “false”
- - Don’t encrypt directory names, leave them intact.
- –crypt-password
- Password or pass phrase for encryption.
- - Config: password
- - Env Var: RCLONE_CRYPT_PASSWORD
- - Type: string
- - Default: ""
- –crypt-password2
- Password or pass phrase for salt. Optional but recommended. Should be
- different to the previous password.
- - Config: password2
- - Env Var: RCLONE_CRYPT_PASSWORD2
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to crypt (Encrypt/Decrypt a
- remote).
- –crypt-show-mapping
- For all files listed show how the names encrypt.
- If this flag is set then for each file that the remote is asked to list,
- it will log (at level INFO) a line stating the decrypted file name and
- the encrypted file name.
- This is so you can work out which encrypted names are which decrypted
- names just in case you need to do something with the encrypted file
- names, or for debugging purposes.
- - Config: show_mapping
- - Env Var: RCLONE_CRYPT_SHOW_MAPPING
- - Type: bool
- - Default: false
- Backing up a crypted remote
- If you wish to backup a crypted remote, it it recommended that you use
- rclone sync on the encrypted files, and make sure the passwords are the
- same in the new encrypted remote.
- This will have the following advantages
- - rclone sync will check the checksums while copying
- - you can use rclone check between the encrypted remotes
- - you don’t decrypt and encrypt unnecessarily
- For example, let’s say you have your original remote at remote: with the
- encrypted version at eremote: with path remote:crypt. You would then set
- up the new remote remote2: and then the encrypted version eremote2: with
- path remote2:crypt using the same passwords as eremote:.
- To sync the two remotes you would do
- rclone sync remote:crypt remote2:crypt
- And to check the integrity you would do
- rclone check remote:crypt remote2:crypt
- File formats
- File encryption
- Files are encrypted 1:1 source file to destination object. The file has
- a header and is divided into chunks.
- Header
- - 8 bytes magic string RCLONE\x00\x00
- - 24 bytes Nonce (IV)
- The initial nonce is generated from the operating systems crypto strong
- random number generator. The nonce is incremented for each chunk read
- making sure each nonce is unique for each block written. The chance of a
- nonce being re-used is minuscule. If you wrote an exabyte of data (10¹⁸
- bytes) you would have a probability of approximately 2×10⁻³² of re-using
- a nonce.
- Chunk
- Each chunk will contain 64kB of data, except for the last one which may
- have less data. The data chunk is in standard NACL secretbox format.
- Secretbox uses XSalsa20 and Poly1305 to encrypt and authenticate
- messages.
- Each chunk contains:
- - 16 Bytes of Poly1305 authenticator
- - 1 - 65536 bytes XSalsa20 encrypted data
- 64k chunk size was chosen as the best performing chunk size (the
- authenticator takes too much time below this and the performance drops
- off due to cache effects above this). Note that these chunks are
- buffered in memory so they can’t be too big.
- This uses a 32 byte (256 bit key) key derived from the user password.
- Examples
- 1 byte file will encrypt to
- - 32 bytes header
- - 17 bytes data chunk
- 49 bytes total
- 1MB (1048576 bytes) file will encrypt to
- - 32 bytes header
- - 16 chunks of 65568 bytes
- 1049120 bytes total (a 0.05% overhead). This is the overhead for big
- files.
- Name encryption
- File names are encrypted segment by segment - the path is broken up into
- / separated strings and these are encrypted individually.
- File segments are padded using using PKCS#7 to a multiple of 16 bytes
- before encryption.
- They are then encrypted with EME using AES with 256 bit key. EME
- (ECB-Mix-ECB) is a wide-block encryption mode presented in the 2003
- paper “A Parallelizable Enciphering Mode” by Halevi and Rogaway.
- This makes for deterministic encryption which is what we want - the same
- filename must encrypt to the same thing otherwise we can’t find it on
- the cloud storage system.
- This means that
- - filenames with the same name will encrypt the same
- - filenames which start the same won’t have a common prefix
- This uses a 32 byte key (256 bits) and a 16 byte (128 bits) IV both of
- which are derived from the user password.
- After encryption they are written out using a modified version of
- standard base32 encoding as described in RFC4648. The standard encoding
- is modified in two ways:
- - it becomes lower case (no-one likes upper case filenames!)
- - we strip the padding character =
- base32 is used rather than the more efficient base64 so rclone can be
- used on case insensitive remotes (eg Windows, Amazon Drive).
- Key derivation
- Rclone uses scrypt with parameters N=16384, r=8, p=1 with an optional
- user supplied salt (password2) to derive the 32+32+16 = 80 bytes of key
- material required. If the user doesn’t supply a salt then rclone uses an
- internal one.
- scrypt makes it impractical to mount a dictionary attack on rclone
- encrypted data. For full protection against this you should always use a
- salt.
- Dropbox
- Paths are specified as remote:path
- Dropbox paths may be as deep as required, eg
- remote:directory/subdirectory.
- The initial setup for dropbox involves getting a token from Dropbox
- which you need to do in your browser. rclone config walks you through
- it.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- n) New remote
- d) Delete remote
- q) Quit config
- e/n/d/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Dropbox
- \ "dropbox"
- [snip]
- Storage> dropbox
- Dropbox App Key - leave blank normally.
- app_key>
- Dropbox App Secret - leave blank normally.
- app_secret>
- Remote config
- Please visit:
- https://www.dropbox.com/1/oauth2/authorize?client_id=XXXXXXXXXXXXXXX&response_type=code
- Enter the code: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_XXXXXXXXXX
- --------------------
- [remote]
- app_key =
- app_secret =
- token = XXXXXXXXXXXXXXXXXXXXXXXXXXXXX_XXXX_XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- You can then use it like this,
- List directories in top level of your dropbox
- rclone lsd remote:
- List all the files in your dropbox
- rclone ls remote:
- To copy a local directory to a dropbox directory called backup
- rclone copy /home/source remote:backup
- Dropbox for business
- Rclone supports Dropbox for business and Team Folders.
- When using Dropbox for business remote: and remote:path/to/file will
- refer to your personal folder.
- If you wish to see Team Folders you must use a leading / in the path, so
- rclone lsd remote:/ will refer to the root and show you all Team Folders
- and your User Folder.
- You can then use team folders like this remote:/TeamFolder and
- remote:/TeamFolder/path/to/file.
- A leading / for a Dropbox personal account will do nothing, but it will
- take an extra HTTP transaction so it should be avoided.
- Modified time and Hashes
- Dropbox supports modified times, but the only way to set a modification
- time is to re-upload the file.
- This means that if you uploaded your data with an older version of
- rclone which didn’t support the v2 API and modified times, rclone will
- decide to upload all your old data to fix the modification times. If you
- don’t want this to happen use --size-only or --checksum flag to stop it.
- Dropbox supports its own hash type which is checked for all transfers.
- Restricted filename characters
- Character Value Replacement
- ----------- ------- -------------
- NUL 0x00 ␀
- / 0x2F /
- DEL 0x7F ␡
- \ 0x5C \
- File names can also not end with the following characters. These only
- get replaced if they are last character in the name:
- Character Value Replacement
- ----------- ------- -------------
- SP 0x20 ␠
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Standard Options
- Here are the standard options specific to dropbox (Dropbox).
- –dropbox-client-id
- Dropbox App Client Id Leave blank normally.
- - Config: client_id
- - Env Var: RCLONE_DROPBOX_CLIENT_ID
- - Type: string
- - Default: ""
- –dropbox-client-secret
- Dropbox App Client Secret Leave blank normally.
- - Config: client_secret
- - Env Var: RCLONE_DROPBOX_CLIENT_SECRET
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to dropbox (Dropbox).
- –dropbox-chunk-size
- Upload chunk size. (< 150M).
- Any files larger than this will be uploaded in chunks of this size.
- Note that chunks are buffered in memory (one at a time) so rclone can
- deal with retries. Setting this larger will increase the speed slightly
- (at most 10% for 128MB in tests) at the cost of using more memory. It
- can be set smaller if you are tight on memory.
- - Config: chunk_size
- - Env Var: RCLONE_DROPBOX_CHUNK_SIZE
- - Type: SizeSuffix
- - Default: 48M
- –dropbox-impersonate
- Impersonate this user when using a business account.
- - Config: impersonate
- - Env Var: RCLONE_DROPBOX_IMPERSONATE
- - Type: string
- - Default: ""
- –dropbox-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_DROPBOX_ENCODING
- - Type: MultiEncoder
- - Default: Slash,BackSlash,Del,RightSpace,InvalidUtf8,Dot
- Limitations
- Note that Dropbox is case insensitive so you can’t have a file called
- “Hello.doc” and one called “hello.doc”.
- There are some file names such as thumbs.db which Dropbox can’t store.
- There is a full list of them in the “Ignored Files” section of this
- document. Rclone will issue an error message
- File name disallowed - not uploading if it attempts to upload one of
- those file names, but the sync won’t fail.
- If you have more than 10,000 files in a directory then
- rclone purge dropbox:dir will return the error
- Failed to purge: There are too many files involved in this operation. As
- a work-around do an rclone delete dropbox:dir followed by an
- rclone rmdir dropbox:dir.
- Get your own Dropbox App ID
- When you use rclone with Dropbox in its default configuration you are
- using rclone’s App ID. This is shared between all the rclone users.
- Here is how to create your own Dropbox App ID for rclone:
- 1. Log into the Dropbox App console with your Dropbox Account (It need
- not to be the same account as the Dropbox you want to access)
- 2. Choose an API => Usually this should be Dropbox API
- 3. Choose the type of access you want to use => Full Dropbox or App
- Folder
- 4. Name your App
- 5. Click the button Create App
- 6. Find the App key and App secret Use these values in rclone config to
- add a new remote or edit an existing remote.
- FTP
- FTP is the File Transfer Protocol. FTP support is provided using the
- github.com/jlaffaye/ftp package.
- Here is an example of making an FTP configuration. First run
- rclone config
- This will guide you through an interactive setup process. An FTP remote
- only needs a host together with and a username and a password. With
- anonymous FTP server, you will need to use anonymous as username and
- your email address as the password.
- No remotes found - make a new one
- n) New remote
- r) Rename remote
- c) Copy remote
- s) Set configuration password
- q) Quit config
- n/r/c/s/q> n
- name> remote
- Type of storage to configure.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- [snip]
- XX / FTP Connection
- \ "ftp"
- [snip]
- Storage> ftp
- ** See help for ftp backend at: https://rclone.org/ftp/ **
- FTP host to connect to
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- 1 / Connect to ftp.example.com
- \ "ftp.example.com"
- host> ftp.example.com
- FTP username, leave blank for current username, ncw
- Enter a string value. Press Enter for the default ("").
- user>
- FTP port, leave blank to use default (21)
- Enter a string value. Press Enter for the default ("").
- port>
- FTP password
- y) Yes type in my own password
- g) Generate random password
- y/g> y
- Enter the password:
- password:
- Confirm the password:
- password:
- Use FTP over TLS (Implicit)
- Enter a boolean value (true or false). Press Enter for the default ("false").
- tls>
- Remote config
- --------------------
- [remote]
- type = ftp
- host = ftp.example.com
- pass = *** ENCRYPTED ***
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- This remote is called remote and can now be used like this
- See all directories in the home directory
- rclone lsd remote:
- Make a new directory
- rclone mkdir remote:path/to/directory
- List the contents of a directory
- rclone ls remote:path/to/directory
- Sync /home/local/directory to the remote directory, deleting any excess
- files in the directory.
- rclone sync /home/local/directory remote:directory
- Modified time
- FTP does not support modified times. Any times you see on the server
- will be time of upload.
- Checksums
- FTP does not support any checksums.
- Restricted filename characters
- In addition to the default restricted characters set the following
- characters are also replaced:
- File names can also not end with the following characters. These only
- get replaced if they are last character in the name:
- Character Value Replacement
- ----------- ------- -------------
- SP 0x20 ␠
- Note that not all FTP servers can have all characters in file names, for
- example:
- FTP Server Forbidden characters
- ------------ ----------------------
- proftpd *
- pureftpd \ [ ]
- Implicit TLS
- FTP supports implicit FTP over TLS servers (FTPS). This has to be
- enabled in the config for the remote. The default FTPS port is 990 so
- the port will likely have to be explictly set in the config for the
- remote.
- Standard Options
- Here are the standard options specific to ftp (FTP Connection).
- –ftp-host
- FTP host to connect to
- - Config: host
- - Env Var: RCLONE_FTP_HOST
- - Type: string
- - Default: ""
- - Examples:
- - “ftp.example.com”
- - Connect to ftp.example.com
- –ftp-user
- FTP username, leave blank for current username, $USER
- - Config: user
- - Env Var: RCLONE_FTP_USER
- - Type: string
- - Default: ""
- –ftp-port
- FTP port, leave blank to use default (21)
- - Config: port
- - Env Var: RCLONE_FTP_PORT
- - Type: string
- - Default: ""
- –ftp-pass
- FTP password
- - Config: pass
- - Env Var: RCLONE_FTP_PASS
- - Type: string
- - Default: ""
- –ftp-tls
- Use FTP over TLS (Implicit)
- - Config: tls
- - Env Var: RCLONE_FTP_TLS
- - Type: bool
- - Default: false
- Advanced Options
- Here are the advanced options specific to ftp (FTP Connection).
- –ftp-concurrency
- Maximum number of FTP simultaneous connections, 0 for unlimited
- - Config: concurrency
- - Env Var: RCLONE_FTP_CONCURRENCY
- - Type: int
- - Default: 0
- –ftp-no-check-certificate
- Do not verify the TLS certificate of the server
- - Config: no_check_certificate
- - Env Var: RCLONE_FTP_NO_CHECK_CERTIFICATE
- - Type: bool
- - Default: false
- –ftp-disable-epsv
- Disable using EPSV even if server advertises support
- - Config: disable_epsv
- - Env Var: RCLONE_FTP_DISABLE_EPSV
- - Type: bool
- - Default: false
- –ftp-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_FTP_ENCODING
- - Type: MultiEncoder
- - Default: Slash,Del,Ctl,RightSpace,Dot
- Limitations
- Note that since FTP isn’t HTTP based the following flags don’t work with
- it: --dump-headers, --dump-bodies, --dump-auth
- Note that --timeout isn’t supported (but --contimeout is).
- Note that --bind isn’t supported.
- FTP could support server side move but doesn’t yet.
- Note that the ftp backend does not support the ftp_proxy environment
- variable yet.
- Note that while implicit FTP over TLS is supported, explicit FTP over
- TLS is not.
- Google Cloud Storage
- Paths are specified as remote:bucket (or remote: for the lsd command.)
- You may put subdirectories in too, eg remote:bucket/path/to/dir.
- The initial setup for google cloud storage involves getting a token from
- Google Cloud Storage which you need to do in your browser. rclone config
- walks you through it.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- n) New remote
- d) Delete remote
- q) Quit config
- e/n/d/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Google Cloud Storage (this is not Google Drive)
- \ "google cloud storage"
- [snip]
- Storage> google cloud storage
- Google Application Client Id - leave blank normally.
- client_id>
- Google Application Client Secret - leave blank normally.
- client_secret>
- Project number optional - needed only for list/create/delete buckets - see your developer console.
- project_number> 12345678
- Service Account Credentials JSON file path - needed only if you want use SA instead of interactive login.
- service_account_file>
- Access Control List for new objects.
- Choose a number from below, or type in your own value
- 1 / Object owner gets OWNER access, and all Authenticated Users get READER access.
- \ "authenticatedRead"
- 2 / Object owner gets OWNER access, and project team owners get OWNER access.
- \ "bucketOwnerFullControl"
- 3 / Object owner gets OWNER access, and project team owners get READER access.
- \ "bucketOwnerRead"
- 4 / Object owner gets OWNER access [default if left blank].
- \ "private"
- 5 / Object owner gets OWNER access, and project team members get access according to their roles.
- \ "projectPrivate"
- 6 / Object owner gets OWNER access, and all Users get READER access.
- \ "publicRead"
- object_acl> 4
- Access Control List for new buckets.
- Choose a number from below, or type in your own value
- 1 / Project team owners get OWNER access, and all Authenticated Users get READER access.
- \ "authenticatedRead"
- 2 / Project team owners get OWNER access [default if left blank].
- \ "private"
- 3 / Project team members get access according to their roles.
- \ "projectPrivate"
- 4 / Project team owners get OWNER access, and all Users get READER access.
- \ "publicRead"
- 5 / Project team owners get OWNER access, and all Users get WRITER access.
- \ "publicReadWrite"
- bucket_acl> 2
- Location for the newly created buckets.
- Choose a number from below, or type in your own value
- 1 / Empty for default location (US).
- \ ""
- 2 / Multi-regional location for Asia.
- \ "asia"
- 3 / Multi-regional location for Europe.
- \ "eu"
- 4 / Multi-regional location for United States.
- \ "us"
- 5 / Taiwan.
- \ "asia-east1"
- 6 / Tokyo.
- \ "asia-northeast1"
- 7 / Singapore.
- \ "asia-southeast1"
- 8 / Sydney.
- \ "australia-southeast1"
- 9 / Belgium.
- \ "europe-west1"
- 10 / London.
- \ "europe-west2"
- 11 / Iowa.
- \ "us-central1"
- 12 / South Carolina.
- \ "us-east1"
- 13 / Northern Virginia.
- \ "us-east4"
- 14 / Oregon.
- \ "us-west1"
- location> 12
- The storage class to use when storing objects in Google Cloud Storage.
- Choose a number from below, or type in your own value
- 1 / Default
- \ ""
- 2 / Multi-regional storage class
- \ "MULTI_REGIONAL"
- 3 / Regional storage class
- \ "REGIONAL"
- 4 / Nearline storage class
- \ "NEARLINE"
- 5 / Coldline storage class
- \ "COLDLINE"
- 6 / Durable reduced availability storage class
- \ "DURABLE_REDUCED_AVAILABILITY"
- storage_class> 5
- Remote config
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine or Y didn't work
- y) Yes
- n) No
- y/n> y
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- --------------------
- [remote]
- type = google cloud storage
- client_id =
- client_secret =
- token = {"AccessToken":"xxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","RefreshToken":"x/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxx","Expiry":"2014-07-17T20:49:14.929208288+01:00","Extra":null}
- project_number = 12345678
- object_acl = private
- bucket_acl = private
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Note that rclone runs a webserver on your local machine to collect the
- token as returned from Google if you use auto config mode. This only
- runs from the moment it opens your browser to the moment you get back
- the verification code. This is on http://127.0.0.1:53682/ and this it
- may require you to unblock it temporarily if you are running a host
- firewall, or use manual mode.
- This remote is called remote and can now be used like this
- See all the buckets in your project
- rclone lsd remote:
- Make a new bucket
- rclone mkdir remote:bucket
- List the contents of a bucket
- rclone ls remote:bucket
- Sync /home/local/directory to the remote bucket, deleting any excess
- files in the bucket.
- rclone sync /home/local/directory remote:bucket
- Service Account support
- You can set up rclone with Google Cloud Storage in an unattended mode,
- i.e. not tied to a specific end-user Google account. This is useful when
- you want to synchronise files onto machines that don’t have actively
- logged-in users, for example build machines.
- To get credentials for Google Cloud Platform IAM Service Accounts,
- please head to the Service Account section of the Google Developer
- Console. Service Accounts behave just like normal User permissions in
- Google Cloud Storage ACLs, so you can limit their access (e.g. make them
- read only). After creating an account, a JSON file containing the
- Service Account’s credentials will be downloaded onto your machines.
- These credentials are what rclone will use for authentication.
- To use a Service Account instead of OAuth2 token flow, enter the path to
- your Service Account credentials at the service_account_file prompt and
- rclone won’t use the browser based authentication flow. If you’d rather
- stuff the contents of the credentials file into the rclone config file,
- you can set service_account_credentials with the actual contents of the
- file instead, or set the equivalent environment variable.
- Application Default Credentials
- If no other source of credentials is provided, rclone will fall back to
- Application Default Credentials this is useful both when you already
- have configured authentication for your developer account, or in
- production when running on a google compute host. Note that if running
- in docker, you may need to run additional commands on your google
- compute machine - see this page.
- Note that in the case application default credentials are used, there is
- no need to explicitly configure a project number.
- –fast-list
- This remote supports --fast-list which allows you to use fewer
- transactions in exchange for more memory. See the rclone docs for more
- details.
- Modified time
- Google google cloud storage stores md5sums natively and rclone stores
- modification times as metadata on the object, under the “mtime” key in
- RFC3339 format accurate to 1ns.
- Restricted filename characters
- Character Value Replacement
- ----------- ------- -------------
- NUL 0x00 ␀
- LF 0x0A ␊
- CR 0x0D ␍
- / 0x2F /
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Standard Options
- Here are the standard options specific to google cloud storage (Google
- Cloud Storage (this is not Google Drive)).
- –gcs-client-id
- Google Application Client Id Leave blank normally.
- - Config: client_id
- - Env Var: RCLONE_GCS_CLIENT_ID
- - Type: string
- - Default: ""
- –gcs-client-secret
- Google Application Client Secret Leave blank normally.
- - Config: client_secret
- - Env Var: RCLONE_GCS_CLIENT_SECRET
- - Type: string
- - Default: ""
- –gcs-project-number
- Project number. Optional - needed only for list/create/delete buckets -
- see your developer console.
- - Config: project_number
- - Env Var: RCLONE_GCS_PROJECT_NUMBER
- - Type: string
- - Default: ""
- –gcs-service-account-file
- Service Account Credentials JSON file path Leave blank normally. Needed
- only if you want use SA instead of interactive login.
- - Config: service_account_file
- - Env Var: RCLONE_GCS_SERVICE_ACCOUNT_FILE
- - Type: string
- - Default: ""
- –gcs-service-account-credentials
- Service Account Credentials JSON blob Leave blank normally. Needed only
- if you want use SA instead of interactive login.
- - Config: service_account_credentials
- - Env Var: RCLONE_GCS_SERVICE_ACCOUNT_CREDENTIALS
- - Type: string
- - Default: ""
- –gcs-object-acl
- Access Control List for new objects.
- - Config: object_acl
- - Env Var: RCLONE_GCS_OBJECT_ACL
- - Type: string
- - Default: ""
- - Examples:
- - “authenticatedRead”
- - Object owner gets OWNER access, and all Authenticated Users
- get READER access.
- - “bucketOwnerFullControl”
- - Object owner gets OWNER access, and project team owners get
- OWNER access.
- - “bucketOwnerRead”
- - Object owner gets OWNER access, and project team owners get
- READER access.
- - “private”
- - Object owner gets OWNER access [default if left blank].
- - “projectPrivate”
- - Object owner gets OWNER access, and project team members get
- access according to their roles.
- - “publicRead”
- - Object owner gets OWNER access, and all Users get READER
- access.
- –gcs-bucket-acl
- Access Control List for new buckets.
- - Config: bucket_acl
- - Env Var: RCLONE_GCS_BUCKET_ACL
- - Type: string
- - Default: ""
- - Examples:
- - “authenticatedRead”
- - Project team owners get OWNER access, and all Authenticated
- Users get READER access.
- - “private”
- - Project team owners get OWNER access [default if left
- blank].
- - “projectPrivate”
- - Project team members get access according to their roles.
- - “publicRead”
- - Project team owners get OWNER access, and all Users get
- READER access.
- - “publicReadWrite”
- - Project team owners get OWNER access, and all Users get
- WRITER access.
- –gcs-bucket-policy-only
- Access checks should use bucket-level IAM policies.
- If you want to upload objects to a bucket with Bucket Policy Only set
- then you will need to set this.
- When it is set, rclone:
- - ignores ACLs set on buckets
- - ignores ACLs set on objects
- - creates buckets with Bucket Policy Only set
- Docs: https://cloud.google.com/storage/docs/bucket-policy-only
- - Config: bucket_policy_only
- - Env Var: RCLONE_GCS_BUCKET_POLICY_ONLY
- - Type: bool
- - Default: false
- –gcs-location
- Location for the newly created buckets.
- - Config: location
- - Env Var: RCLONE_GCS_LOCATION
- - Type: string
- - Default: ""
- - Examples:
- - ""
- - Empty for default location (US).
- - “asia”
- - Multi-regional location for Asia.
- - “eu”
- - Multi-regional location for Europe.
- - “us”
- - Multi-regional location for United States.
- - “asia-east1”
- - Taiwan.
- - “asia-east2”
- - Hong Kong.
- - “asia-northeast1”
- - Tokyo.
- - “asia-south1”
- - Mumbai.
- - “asia-southeast1”
- - Singapore.
- - “australia-southeast1”
- - Sydney.
- - “europe-north1”
- - Finland.
- - “europe-west1”
- - Belgium.
- - “europe-west2”
- - London.
- - “europe-west3”
- - Frankfurt.
- - “europe-west4”
- - Netherlands.
- - “us-central1”
- - Iowa.
- - “us-east1”
- - South Carolina.
- - “us-east4”
- - Northern Virginia.
- - “us-west1”
- - Oregon.
- - “us-west2”
- - California.
- –gcs-storage-class
- The storage class to use when storing objects in Google Cloud Storage.
- - Config: storage_class
- - Env Var: RCLONE_GCS_STORAGE_CLASS
- - Type: string
- - Default: ""
- - Examples:
- - ""
- - Default
- - “MULTI_REGIONAL”
- - Multi-regional storage class
- - “REGIONAL”
- - Regional storage class
- - “NEARLINE”
- - Nearline storage class
- - “COLDLINE”
- - Coldline storage class
- - “DURABLE_REDUCED_AVAILABILITY”
- - Durable reduced availability storage class
- Advanced Options
- Here are the advanced options specific to google cloud storage (Google
- Cloud Storage (this is not Google Drive)).
- –gcs-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_GCS_ENCODING
- - Type: MultiEncoder
- - Default: Slash,CrLf,InvalidUtf8,Dot
- Google Drive
- Paths are specified as drive:path
- Drive paths may be as deep as required, eg drive:directory/subdirectory.
- The initial setup for drive involves getting a token from Google drive
- which you need to do in your browser. rclone config walks you through
- it.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- r) Rename remote
- c) Copy remote
- s) Set configuration password
- q) Quit config
- n/r/c/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Google Drive
- \ "drive"
- [snip]
- Storage> drive
- Google Application Client Id - leave blank normally.
- client_id>
- Google Application Client Secret - leave blank normally.
- client_secret>
- Scope that rclone should use when requesting access from drive.
- Choose a number from below, or type in your own value
- 1 / Full access all files, excluding Application Data Folder.
- \ "drive"
- 2 / Read-only access to file metadata and file contents.
- \ "drive.readonly"
- / Access to files created by rclone only.
- 3 | These are visible in the drive website.
- | File authorization is revoked when the user deauthorizes the app.
- \ "drive.file"
- / Allows read and write access to the Application Data folder.
- 4 | This is not visible in the drive website.
- \ "drive.appfolder"
- / Allows read-only access to file metadata but
- 5 | does not allow any access to read or download file content.
- \ "drive.metadata.readonly"
- scope> 1
- ID of the root folder - leave blank normally. Fill in to access "Computers" folders. (see docs).
- root_folder_id>
- Service Account Credentials JSON file path - needed only if you want use SA instead of interactive login.
- service_account_file>
- Remote config
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine or Y didn't work
- y) Yes
- n) No
- y/n> y
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- Configure this as a team drive?
- y) Yes
- n) No
- y/n> n
- --------------------
- [remote]
- client_id =
- client_secret =
- scope = drive
- root_folder_id =
- service_account_file =
- token = {"access_token":"XXX","token_type":"Bearer","refresh_token":"XXX","expiry":"2014-03-16T13:57:58.955387075Z"}
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Note that rclone runs a webserver on your local machine to collect the
- token as returned from Google if you use auto config mode. This only
- runs from the moment it opens your browser to the moment you get back
- the verification code. This is on http://127.0.0.1:53682/ and this it
- may require you to unblock it temporarily if you are running a host
- firewall, or use manual mode.
- You can then use it like this,
- List directories in top level of your drive
- rclone lsd remote:
- List all the files in your drive
- rclone ls remote:
- To copy a local directory to a drive directory called backup
- rclone copy /home/source remote:backup
- Scopes
- Rclone allows you to select which scope you would like for rclone to
- use. This changes what type of token is granted to rclone. The scopes
- are defined here..
- The scope are
- drive
- This is the default scope and allows full access to all files, except
- for the Application Data Folder (see below).
- Choose this one if you aren’t sure.
- drive.readonly
- This allows read only access to all files. Files may be listed and
- downloaded but not uploaded, renamed or deleted.
- drive.file
- With this scope rclone can read/view/modify only those files and folders
- it creates.
- So if you uploaded files to drive via the web interface (or any other
- means) they will not be visible to rclone.
- This can be useful if you are using rclone to backup data and you want
- to be sure confidential data on your drive is not visible to rclone.
- Files created with this scope are visible in the web interface.
- drive.appfolder
- This gives rclone its own private area to store files. Rclone will not
- be able to see any other files on your drive and you won’t be able to
- see rclone’s files from the web interface either.
- drive.metadata.readonly
- This allows read only access to file names only. It does not allow
- rclone to download or upload data, or rename or delete files or
- directories.
- Root folder ID
- You can set the root_folder_id for rclone. This is the directory
- (identified by its Folder ID) that rclone considers to be the root of
- your drive.
- Normally you will leave this blank and rclone will determine the correct
- root to use itself.
- However you can set this to restrict rclone to a specific folder
- hierarchy or to access data within the “Computers” tab on the drive web
- interface (where files from Google’s Backup and Sync desktop program
- go).
- In order to do this you will have to find the Folder ID of the directory
- you wish rclone to display. This will be the last segment of the URL
- when you open the relevant folder in the drive web interface.
- So if the folder you want rclone to use has a URL which looks like
- https://drive.google.com/drive/folders/1XyfxxxxxxxxxxxxxxxxxxxxxxxxxKHCh
- in the browser, then you use 1XyfxxxxxxxxxxxxxxxxxxxxxxxxxKHCh as the
- root_folder_id in the config.
- NB folders under the “Computers” tab seem to be read only (drive gives a
- 500 error) when using rclone.
- There doesn’t appear to be an API to discover the folder IDs of the
- “Computers” tab - please contact us if you know otherwise!
- Note also that rclone can’t access any data under the “Backups” tab on
- the google drive web interface yet.
- Service Account support
- You can set up rclone with Google Drive in an unattended mode, i.e. not
- tied to a specific end-user Google account. This is useful when you want
- to synchronise files onto machines that don’t have actively logged-in
- users, for example build machines.
- To use a Service Account instead of OAuth2 token flow, enter the path to
- your Service Account credentials at the service_account_file prompt
- during rclone config and rclone won’t use the browser based
- authentication flow. If you’d rather stuff the contents of the
- credentials file into the rclone config file, you can set
- service_account_credentials with the actual contents of the file
- instead, or set the equivalent environment variable.
- Use case - Google Apps/G-suite account and individual Drive
- Let’s say that you are the administrator of a Google Apps (old) or
- G-suite account. The goal is to store data on an individual’s Drive
- account, who IS a member of the domain. We’ll call the domain
- EXAMPLE.COM, and the user FOO@EXAMPLE.COM.
- There’s a few steps we need to go through to accomplish this:
- 1. Create a service account for example.com
- - To create a service account and obtain its credentials, go to the
- Google Developer Console.
- - You must have a project - create one if you don’t.
- - Then go to “IAM & admin” -> “Service Accounts”.
- - Use the “Create Credentials” button. Fill in “Service account name”
- with something that identifies your client. “Role” can be empty.
- - Tick “Furnish a new private key” - select “Key type JSON”.
- - Tick “Enable G Suite Domain-wide Delegation”. This option makes
- “impersonation” possible, as documented here: Delegating domain-wide
- authority to the service account
- - These credentials are what rclone will use for authentication. If
- you ever need to remove access, press the “Delete service account
- key” button.
- 2. Allowing API access to example.com Google Drive
- - Go to example.com’s admin console
- - Go into “Security” (or use the search bar)
- - Select “Show more” and then “Advanced settings”
- - Select “Manage API client access” in the “Authentication” section
- - In the “Client Name” field enter the service account’s “Client ID” -
- this can be found in the Developer Console under “IAM & Admin” ->
- “Service Accounts”, then “View Client ID” for the newly created
- service account. It is a ~21 character numerical string.
- - In the next field, “One or More API Scopes”, enter
- https://www.googleapis.com/auth/drive to grant access to Google
- Drive specifically.
- 3. Configure rclone, assuming a new install
- rclone config
- n/s/q> n # New
- name>gdrive # Gdrive is an example name
- Storage> # Select the number shown for Google Drive
- client_id> # Can be left blank
- client_secret> # Can be left blank
- scope> # Select your scope, 1 for example
- root_folder_id> # Can be left blank
- service_account_file> /home/foo/myJSONfile.json # This is where the JSON file goes!
- y/n> # Auto config, y
- 4. Verify that it’s working
- - rclone -v --drive-impersonate foo@example.com lsf gdrive:backup
- - The arguments do:
- - -v - verbose logging
- - --drive-impersonate foo@example.com - this is what does the
- magic, pretending to be user foo.
- - lsf - list files in a parsing friendly way
- - gdrive:backup - use the remote called gdrive, work in the folder
- named backup.
- Team drives
- If you want to configure the remote to point to a Google Team Drive then
- answer y to the question Configure this as a team drive?.
- This will fetch the list of Team Drives from google and allow you to
- configure which one you want to use. You can also type in a team drive
- ID if you prefer.
- For example:
- Configure this as a team drive?
- y) Yes
- n) No
- y/n> y
- Fetching team drive list...
- Choose a number from below, or type in your own value
- 1 / Rclone Test
- \ "xxxxxxxxxxxxxxxxxxxx"
- 2 / Rclone Test 2
- \ "yyyyyyyyyyyyyyyyyyyy"
- 3 / Rclone Test 3
- \ "zzzzzzzzzzzzzzzzzzzz"
- Enter a Team Drive ID> 1
- --------------------
- [remote]
- client_id =
- client_secret =
- token = {"AccessToken":"xxxx.x.xxxxx_xxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","RefreshToken":"1/xxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxx","Expiry":"2014-03-16T13:57:58.955387075Z","Extra":null}
- team_drive = xxxxxxxxxxxxxxxxxxxx
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- –fast-list
- This remote supports --fast-list which allows you to use fewer
- transactions in exchange for more memory. See the rclone docs for more
- details.
- It does this by combining multiple list calls into a single API request.
- This works by combining many '%s' in parents filters into one
- expression. To list the contents of directories a, b and c, the
- following requests will be send by the regular List function:
- trashed=false and 'a' in parents
- trashed=false and 'b' in parents
- trashed=false and 'c' in parents
- These can now be combined into a single request:
- trashed=false and ('a' in parents or 'b' in parents or 'c' in parents)
- The implementation of ListR will put up to 50 parents filters into one
- request. It will use the --checkers value to specify the number of
- requests to run in parallel.
- In tests, these batch requests were up to 20x faster than the regular
- method. Running the following command against different sized folders
- gives:
- rclone lsjson -vv -R --checkers=6 gdrive:folder
- small folder (220 directories, 700 files):
- - without --fast-list: 38s
- - with --fast-list: 10s
- large folder (10600 directories, 39000 files):
- - without --fast-list: 22:05 min
- - with --fast-list: 58s
- Modified time
- Google drive stores modification times accurate to 1 ms.
- Restricted filename characters
- Only Invalid UTF-8 bytes will be replaced, as they can’t be used in JSON
- strings.
- In contrast to other backends, / can also be used in names and . or ..
- are valid names.
- Revisions
- Google drive stores revisions of files. When you upload a change to an
- existing file to google drive using rclone it will create a new revision
- of that file.
- Revisions follow the standard google policy which at time of writing was
- - They are deleted after 30 days or 100 revisions (whatever comes
- first).
- - They do not count towards a user storage quota.
- Deleting files
- By default rclone will send all files to the trash when deleting files.
- If deleting them permanently is required then use the
- --drive-use-trash=false flag, or set the equivalent environment
- variable.
- Emptying trash
- If you wish to empty your trash you can use the rclone cleanup remote:
- command which will permanently delete all your trashed files. This
- command does not take any path arguments.
- Note that Google Drive takes some time (minutes to days) to empty the
- trash even though the command returns within a few seconds. No output is
- echoed, so there will be no confirmation even using -v or -vv.
- Quota information
- To view your current quota you can use the rclone about remote: command
- which will display your usage limit (quota), the usage in Google Drive,
- the size of all files in the Trash and the space used by other Google
- services such as Gmail. This command does not take any path arguments.
- Import/Export of google documents
- Google documents can be exported from and uploaded to Google Drive.
- When rclone downloads a Google doc it chooses a format to download
- depending upon the --drive-export-formats setting. By default the export
- formats are docx,xlsx,pptx,svg which are a sensible default for an
- editable document.
- When choosing a format, rclone runs down the list provided in order and
- chooses the first file format the doc can be exported as from the list.
- If the file can’t be exported to a format on the formats list, then
- rclone will choose a format from the default list.
- If you prefer an archive copy then you might use
- --drive-export-formats pdf, or if you prefer openoffice/libreoffice
- formats you might use --drive-export-formats ods,odt,odp.
- Note that rclone adds the extension to the google doc, so if it is
- called My Spreadsheet on google docs, it will be exported as
- My Spreadsheet.xlsx or My Spreadsheet.pdf etc.
- When importing files into Google Drive, rclone will convert all files
- with an extension in --drive-import-formats to their associated document
- type. rclone will not convert any files by default, since the conversion
- is lossy process.
- The conversion must result in a file with the same extension when the
- --drive-export-formats rules are applied to the uploaded document.
- Here are some examples for allowed and prohibited conversions.
- export-formats import-formats Upload Ext Document Ext Allowed
- ---------------- ---------------- ------------ -------------- ---------
- odt odt odt odt Yes
- odt docx,odt odt odt Yes
- docx docx docx Yes
- odt odt docx No
- odt,docx docx,odt docx odt No
- docx,odt docx,odt docx docx Yes
- docx,odt docx,odt odt docx No
- This limitation can be disabled by specifying
- --drive-allow-import-name-change. When using this flag, rclone can
- convert multiple files types resulting in the same document type at
- once, eg with --drive-import-formats docx,odt,txt, all files having
- these extension would result in a document represented as a docx file.
- This brings the additional risk of overwriting a document, if multiple
- files have the same stem. Many rclone operations will not handle this
- name change in any way. They assume an equal name when copying files and
- might copy the file again or delete them when the name changes.
- Here are the possible export extensions with their corresponding mime
- types. Most of these can also be used for importing, but there more that
- are not listed here. Some of these additional ones might only be
- available when the operating system provides the correct MIME type
- entries.
- This list can be changed by Google Drive at any time and might not
- represent the currently available conversions.
- --------------------------------------------------------------------------------------------------------------------------
- Extension Mime Type Description
- ------------------- --------------------------------------------------------------------------- --------------------------
- csv text/csv Standard CSV format for
- Spreadsheets
- docx application/vnd.openxmlformats-officedocument.wordprocessingml.document Microsoft Office Document
- epub application/epub+zip E-book format
- html text/html An HTML Document
- jpg image/jpeg A JPEG Image File
- json application/vnd.google-apps.script+json JSON Text Format
- odp application/vnd.oasis.opendocument.presentation Openoffice Presentation
- ods application/vnd.oasis.opendocument.spreadsheet Openoffice Spreadsheet
- ods application/x-vnd.oasis.opendocument.spreadsheet Openoffice Spreadsheet
- odt application/vnd.oasis.opendocument.text Openoffice Document
- pdf application/pdf Adobe PDF Format
- png image/png PNG Image Format
- pptx application/vnd.openxmlformats-officedocument.presentationml.presentation Microsoft Office
- Powerpoint
- rtf application/rtf Rich Text Format
- svg image/svg+xml Scalable Vector Graphics
- Format
- tsv text/tab-separated-values Standard TSV format for
- spreadsheets
- txt text/plain Plain Text
- xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Microsoft Office
- Spreadsheet
- zip application/zip A ZIP file of HTML, Images
- CSS
- --------------------------------------------------------------------------------------------------------------------------
- Google documents can also be exported as link files. These files will
- open a browser window for the Google Docs website of that document when
- opened. The link file extension has to be specified as a
- --drive-export-formats parameter. They will match all available Google
- Documents.
- Extension Description OS Support
- ----------- ----------------------------------------- ----------------
- desktop freedesktop.org specified desktop entry Linux
- link.html An HTML Document with a redirect All
- url INI style link file macOS, Windows
- webloc macOS specific XML format macOS
- Standard Options
- Here are the standard options specific to drive (Google Drive).
- –drive-client-id
- Google Application Client Id Setting your own is recommended. See
- https://rclone.org/drive/#making-your-own-client-id for how to create
- your own. If you leave this blank, it will use an internal key which is
- low performance.
- - Config: client_id
- - Env Var: RCLONE_DRIVE_CLIENT_ID
- - Type: string
- - Default: ""
- –drive-client-secret
- Google Application Client Secret Setting your own is recommended.
- - Config: client_secret
- - Env Var: RCLONE_DRIVE_CLIENT_SECRET
- - Type: string
- - Default: ""
- –drive-scope
- Scope that rclone should use when requesting access from drive.
- - Config: scope
- - Env Var: RCLONE_DRIVE_SCOPE
- - Type: string
- - Default: ""
- - Examples:
- - “drive”
- - Full access all files, excluding Application Data Folder.
- - “drive.readonly”
- - Read-only access to file metadata and file contents.
- - “drive.file”
- - Access to files created by rclone only.
- - These are visible in the drive website.
- - File authorization is revoked when the user deauthorizes the
- app.
- - “drive.appfolder”
- - Allows read and write access to the Application Data folder.
- - This is not visible in the drive website.
- - “drive.metadata.readonly”
- - Allows read-only access to file metadata but
- - does not allow any access to read or download file content.
- –drive-root-folder-id
- ID of the root folder Leave blank normally.
- Fill in to access “Computers” folders (see docs), or for rclone to use a
- non root folder as its starting point.
- Note that if this is blank, the first time rclone runs it will fill it
- in with the ID of the root folder.
- - Config: root_folder_id
- - Env Var: RCLONE_DRIVE_ROOT_FOLDER_ID
- - Type: string
- - Default: ""
- –drive-service-account-file
- Service Account Credentials JSON file path Leave blank normally. Needed
- only if you want use SA instead of interactive login.
- - Config: service_account_file
- - Env Var: RCLONE_DRIVE_SERVICE_ACCOUNT_FILE
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to drive (Google Drive).
- –drive-service-account-credentials
- Service Account Credentials JSON blob Leave blank normally. Needed only
- if you want use SA instead of interactive login.
- - Config: service_account_credentials
- - Env Var: RCLONE_DRIVE_SERVICE_ACCOUNT_CREDENTIALS
- - Type: string
- - Default: ""
- –drive-team-drive
- ID of the Team Drive
- - Config: team_drive
- - Env Var: RCLONE_DRIVE_TEAM_DRIVE
- - Type: string
- - Default: ""
- –drive-auth-owner-only
- Only consider files owned by the authenticated user.
- - Config: auth_owner_only
- - Env Var: RCLONE_DRIVE_AUTH_OWNER_ONLY
- - Type: bool
- - Default: false
- –drive-use-trash
- Send files to the trash instead of deleting permanently. Defaults to
- true, namely sending files to the trash. Use --drive-use-trash=false to
- delete files permanently instead.
- - Config: use_trash
- - Env Var: RCLONE_DRIVE_USE_TRASH
- - Type: bool
- - Default: true
- –drive-skip-gdocs
- Skip google documents in all listings. If given, gdocs practically
- become invisible to rclone.
- - Config: skip_gdocs
- - Env Var: RCLONE_DRIVE_SKIP_GDOCS
- - Type: bool
- - Default: false
- –drive-skip-checksum-gphotos
- Skip MD5 checksum on Google photos and videos only.
- Use this if you get checksum errors when transferring Google photos or
- videos.
- Setting this flag will cause Google photos and videos to return a blank
- MD5 checksum.
- Google photos are identifed by being in the “photos” space.
- Corrupted checksums are caused by Google modifying the image/video but
- not updating the checksum.
- - Config: skip_checksum_gphotos
- - Env Var: RCLONE_DRIVE_SKIP_CHECKSUM_GPHOTOS
- - Type: bool
- - Default: false
- –drive-shared-with-me
- Only show files that are shared with me.
- Instructs rclone to operate on your “Shared with me” folder (where
- Google Drive lets you access the files and folders others have shared
- with you).
- This works both with the “list” (lsd, lsl, etc) and the “copy” commands
- (copy, sync, etc), and with all other commands too.
- - Config: shared_with_me
- - Env Var: RCLONE_DRIVE_SHARED_WITH_ME
- - Type: bool
- - Default: false
- –drive-trashed-only
- Only show files that are in the trash. This will show trashed files in
- their original directory structure.
- - Config: trashed_only
- - Env Var: RCLONE_DRIVE_TRASHED_ONLY
- - Type: bool
- - Default: false
- –drive-formats
- Deprecated: see export_formats
- - Config: formats
- - Env Var: RCLONE_DRIVE_FORMATS
- - Type: string
- - Default: ""
- –drive-export-formats
- Comma separated list of preferred formats for downloading Google docs.
- - Config: export_formats
- - Env Var: RCLONE_DRIVE_EXPORT_FORMATS
- - Type: string
- - Default: “docx,xlsx,pptx,svg”
- –drive-import-formats
- Comma separated list of preferred formats for uploading Google docs.
- - Config: import_formats
- - Env Var: RCLONE_DRIVE_IMPORT_FORMATS
- - Type: string
- - Default: ""
- –drive-allow-import-name-change
- Allow the filetype to change when uploading Google docs (e.g. file.doc
- to file.docx). This will confuse sync and reupload every time.
- - Config: allow_import_name_change
- - Env Var: RCLONE_DRIVE_ALLOW_IMPORT_NAME_CHANGE
- - Type: bool
- - Default: false
- –drive-use-created-date
- Use file created date instead of modified date.,
- Useful when downloading data and you want the creation date used in
- place of the last modified date.
- WARNING: This flag may have some unexpected consequences.
- When uploading to your drive all files will be overwritten unless they
- haven’t been modified since their creation. And the inverse will occur
- while downloading. This side effect can be avoided by using the
- “–checksum” flag.
- This feature was implemented to retain photos capture date as recorded
- by google photos. You will first need to check the “Create a Google
- Photos folder” option in your google drive settings. You can then copy
- or move the photos locally and use the date the image was taken
- (created) set as the modification date.
- - Config: use_created_date
- - Env Var: RCLONE_DRIVE_USE_CREATED_DATE
- - Type: bool
- - Default: false
- –drive-use-shared-date
- Use date file was shared instead of modified date.
- Note that, as with “–drive-use-created-date”, this flag may have
- unexpected consequences when uploading/downloading files.
- If both this flag and “–drive-use-created-date” are set, the created
- date is used.
- - Config: use_shared_date
- - Env Var: RCLONE_DRIVE_USE_SHARED_DATE
- - Type: bool
- - Default: false
- –drive-list-chunk
- Size of listing chunk 100-1000. 0 to disable.
- - Config: list_chunk
- - Env Var: RCLONE_DRIVE_LIST_CHUNK
- - Type: int
- - Default: 1000
- –drive-impersonate
- Impersonate this user when using a service account.
- - Config: impersonate
- - Env Var: RCLONE_DRIVE_IMPERSONATE
- - Type: string
- - Default: ""
- –drive-alternate-export
- Use alternate export URLs for google documents export.,
- If this option is set this instructs rclone to use an alternate set of
- export URLs for drive documents. Users have reported that the official
- export URLs can’t export large documents, whereas these unofficial ones
- can.
- See rclone issue #2243 for background, this google drive issue and this
- helpful post.
- - Config: alternate_export
- - Env Var: RCLONE_DRIVE_ALTERNATE_EXPORT
- - Type: bool
- - Default: false
- –drive-upload-cutoff
- Cutoff for switching to chunked upload
- - Config: upload_cutoff
- - Env Var: RCLONE_DRIVE_UPLOAD_CUTOFF
- - Type: SizeSuffix
- - Default: 8M
- –drive-chunk-size
- Upload chunk size. Must a power of 2 >= 256k.
- Making this larger will improve performance, but note that each chunk is
- buffered in memory one per transfer.
- Reducing this will reduce memory usage but decrease performance.
- - Config: chunk_size
- - Env Var: RCLONE_DRIVE_CHUNK_SIZE
- - Type: SizeSuffix
- - Default: 8M
- –drive-acknowledge-abuse
- Set to allow files which return cannotDownloadAbusiveFile to be
- downloaded.
- If downloading a file returns the error “This file has been identified
- as malware or spam and cannot be downloaded” with the error code
- “cannotDownloadAbusiveFile” then supply this flag to rclone to indicate
- you acknowledge the risks of downloading the file and rclone will
- download it anyway.
- - Config: acknowledge_abuse
- - Env Var: RCLONE_DRIVE_ACKNOWLEDGE_ABUSE
- - Type: bool
- - Default: false
- –drive-keep-revision-forever
- Keep new head revision of each file forever.
- - Config: keep_revision_forever
- - Env Var: RCLONE_DRIVE_KEEP_REVISION_FOREVER
- - Type: bool
- - Default: false
- –drive-size-as-quota
- Show sizes as storage quota usage, not actual size.
- Show the size of a file as the the storage quota used. This is the
- current version plus any older versions that have been set to keep
- forever.
- WARNING: This flag may have some unexpected consequences.
- It is not recommended to set this flag in your config - the recommended
- usage is using the flag form –drive-size-as-quota when doing rclone
- ls/lsl/lsf/lsjson/etc only.
- If you do use this flag for syncing (not recommended) then you will need
- to use –ignore size also.
- - Config: size_as_quota
- - Env Var: RCLONE_DRIVE_SIZE_AS_QUOTA
- - Type: bool
- - Default: false
- –drive-v2-download-min-size
- If Object’s are greater, use drive v2 API to download.
- - Config: v2_download_min_size
- - Env Var: RCLONE_DRIVE_V2_DOWNLOAD_MIN_SIZE
- - Type: SizeSuffix
- - Default: off
- –drive-pacer-min-sleep
- Minimum time to sleep between API calls.
- - Config: pacer_min_sleep
- - Env Var: RCLONE_DRIVE_PACER_MIN_SLEEP
- - Type: Duration
- - Default: 100ms
- –drive-pacer-burst
- Number of API calls to allow without sleeping.
- - Config: pacer_burst
- - Env Var: RCLONE_DRIVE_PACER_BURST
- - Type: int
- - Default: 100
- –drive-server-side-across-configs
- Allow server side operations (eg copy) to work across different drive
- configs.
- This can be useful if you wish to do a server side copy between two
- different Google drives. Note that this isn’t enabled by default because
- it isn’t easy to tell if it will work between any two configurations.
- - Config: server_side_across_configs
- - Env Var: RCLONE_DRIVE_SERVER_SIDE_ACROSS_CONFIGS
- - Type: bool
- - Default: false
- –drive-disable-http2
- Disable drive using http2
- There is currently an unsolved issue with the google drive backend and
- HTTP/2. HTTP/2 is therefore disabled by default for the drive backend
- but can be re-enabled here. When the issue is solved this flag will be
- removed.
- See: https://github.com/rclone/rclone/issues/3631
- - Config: disable_http2
- - Env Var: RCLONE_DRIVE_DISABLE_HTTP2
- - Type: bool
- - Default: true
- –drive-stop-on-upload-limit
- Make upload limit errors be fatal
- At the time of writing it is only possible to upload 750GB of data to
- Google Drive a day (this is an undocumented limit). When this limit is
- reached Google Drive produces a slightly different error message. When
- this flag is set it causes these errors to be fatal. These will stop the
- in-progress sync.
- Note that this detection is relying on error message strings which
- Google don’t document so it may break in the future.
- See: https://github.com/rclone/rclone/issues/3857
- - Config: stop_on_upload_limit
- - Env Var: RCLONE_DRIVE_STOP_ON_UPLOAD_LIMIT
- - Type: bool
- - Default: false
- –drive-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_DRIVE_ENCODING
- - Type: MultiEncoder
- - Default: InvalidUtf8
- Limitations
- Drive has quite a lot of rate limiting. This causes rclone to be limited
- to transferring about 2 files per second only. Individual files may be
- transferred much faster at 100s of MBytes/s but lots of small files can
- take a long time.
- Server side copies are also subject to a separate rate limit. If you see
- User rate limit exceeded errors, wait at least 24 hours and retry. You
- can disable server side copies with --disable copy to download and
- upload the files if you prefer.
- Limitations of Google Docs
- Google docs will appear as size -1 in rclone ls and as size 0 in
- anything which uses the VFS layer, eg rclone mount, rclone serve.
- This is because rclone can’t find out the size of the Google docs
- without downloading them.
- Google docs will transfer correctly with rclone sync, rclone copy etc as
- rclone knows to ignore the size when doing the transfer.
- However an unfortunate consequence of this is that you may not be able
- to download Google docs using rclone mount. If it doesn’t work you will
- get a 0 sized file. If you try again the doc may gain its correct size
- and be downloadable. Whther it will work on not depends on the
- application accessing the mount and the OS you are running - experiment
- to find out if it does work for you!
- Duplicated files
- Sometimes, for no reason I’ve been able to track down, drive will
- duplicate a file that rclone uploads. Drive unlike all the other remotes
- can have duplicated files.
- Duplicated files cause problems with the syncing and you will see
- messages in the log about duplicates.
- Use rclone dedupe to fix duplicated files.
- Note that this isn’t just a problem with rclone, even Google Photos on
- Android duplicates files on drive sometimes.
- Rclone appears to be re-copying files it shouldn’t
- The most likely cause of this is the duplicated file issue above - run
- rclone dedupe and check your logs for duplicate object or directory
- messages.
- This can also be caused by a delay/caching on google drive’s end when
- comparing directory listings. Specifically with team drives used in
- combination with –fast-list. Files that were uploaded recently may not
- appear on the directory list sent to rclone when using –fast-list.
- Waiting a moderate period of time between attempts (estimated to be
- approximately 1 hour) and/or not using –fast-list both seem to be
- effective in preventing the problem.
- Making your own client_id
- When you use rclone with Google drive in its default configuration you
- are using rclone’s client_id. This is shared between all the rclone
- users. There is a global rate limit on the number of queries per second
- that each client_id can do set by Google. rclone already has a high
- quota and I will continue to make sure it is high enough by contacting
- Google.
- It is strongly recommended to use your own client ID as the default
- rclone ID is heavily used. If you have multiple services running, it is
- recommended to use an API key for each service. The default Google quota
- is 10 transactions per second so it is recommended to stay under that
- number as if you use more than that, it will cause rclone to rate limit
- and make things slower.
- Here is how to create your own Google Drive client ID for rclone:
- 1. Log into the Google API Console with your Google account. It doesn’t
- matter what Google account you use. (It need not be the same account
- as the Google Drive you want to access)
- 2. Select a project or create a new project.
- 3. Under “ENABLE APIS AND SERVICES” search for “Drive”, and enable the
- “Google Drive API”.
- 4. Click “Credentials” in the left-side panel (not “Create
- credentials”, which opens the wizard), then “Create credentials”,
- then “OAuth client ID”. It will prompt you to set the OAuth consent
- screen product name, if you haven’t set one already.
- 5. Choose an application type of “other”, and click “Create”. (the
- default name is fine)
- 6. It will show you a client ID and client secret. Use these values in
- rclone config to add a new remote or edit an existing remote.
- (Thanks to @balazer on github for these instructions.)
- Google Photos
- The rclone backend for Google Photos is a specialized backend for
- transferring photos and videos to and from Google Photos.
- NB The Google Photos API which rclone uses has quite a few limitations,
- so please read the limitations section carefully to make sure it is
- suitable for your use.
- Configuring Google Photos
- The initial setup for google cloud storage involves getting a token from
- Google Photos which you need to do in your browser. rclone config walks
- you through it.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- [snip]
- XX / Google Photos
- \ "google photos"
- [snip]
- Storage> google photos
- ** See help for google photos backend at: https://rclone.org/googlephotos/ **
- Google Application Client Id
- Leave blank normally.
- Enter a string value. Press Enter for the default ("").
- client_id>
- Google Application Client Secret
- Leave blank normally.
- Enter a string value. Press Enter for the default ("").
- client_secret>
- Set to make the Google Photos backend read only.
- If you choose read only then rclone will only request read only access
- to your photos, otherwise rclone will request full access.
- Enter a boolean value (true or false). Press Enter for the default ("false").
- read_only>
- Edit advanced config? (y/n)
- y) Yes
- n) No
- y/n> n
- Remote config
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine
- y) Yes
- n) No
- y/n> y
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- *** IMPORTANT: All media items uploaded to Google Photos with rclone
- *** are stored in full resolution at original quality. These uploads
- *** will count towards storage in your Google Account.
- --------------------
- [remote]
- type = google photos
- token = {"access_token":"XXX","token_type":"Bearer","refresh_token":"XXX","expiry":"2019-06-28T17:38:04.644930156+01:00"}
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Note that rclone runs a webserver on your local machine to collect the
- token as returned from Google if you use auto config mode. This only
- runs from the moment it opens your browser to the moment you get back
- the verification code. This is on http://127.0.0.1:53682/ and this may
- require you to unblock it temporarily if you are running a host
- firewall, or use manual mode.
- This remote is called remote and can now be used like this
- See all the albums in your photos
- rclone lsd remote:album
- Make a new album
- rclone mkdir remote:album/newAlbum
- List the contents of an album
- rclone ls remote:album/newAlbum
- Sync /home/local/images to the Google Photos, removing any excess files
- in the album.
- rclone sync /home/local/image remote:album/newAlbum
- Layout
- As Google Photos is not a general purpose cloud storage system the
- backend is laid out to help you navigate it.
- The directories under media show different ways of categorizing the
- media. Each file will appear multiple times. So if you want to make a
- backup of your google photos you might choose to backup
- remote:media/by-month. (NB remote:media/by-day is rather slow at the
- moment so avoid for syncing.)
- Note that all your photos and videos will appear somewhere under media,
- but they may not appear under album unless you’ve put them into albums.
- /
- - upload
- - file1.jpg
- - file2.jpg
- - ...
- - media
- - all
- - file1.jpg
- - file2.jpg
- - ...
- - by-year
- - 2000
- - file1.jpg
- - ...
- - 2001
- - file2.jpg
- - ...
- - ...
- - by-month
- - 2000
- - 2000-01
- - file1.jpg
- - ...
- - 2000-02
- - file2.jpg
- - ...
- - ...
- - by-day
- - 2000
- - 2000-01-01
- - file1.jpg
- - ...
- - 2000-01-02
- - file2.jpg
- - ...
- - ...
- - album
- - album name
- - album name/sub
- - shared-album
- - album name
- - album name/sub
- There are two writable parts of the tree, the upload directory and sub
- directories of the the album directory.
- The upload directory is for uploading files you don’t want to put into
- albums. This will be empty to start with and will contain the files
- you’ve uploaded for one rclone session only, becoming empty again when
- you restart rclone. The use case for this would be if you have a load of
- files you just want to once off dump into Google Photos. For repeated
- syncing, uploading to album will work better.
- Directories within the album directory are also writeable and you may
- create new directories (albums) under album. If you copy files with a
- directory hierarchy in there then rclone will create albums with the /
- character in them. For example if you do
- rclone copy /path/to/images remote:album/images
- and the images directory contains
- images
- - file1.jpg
- dir
- file2.jpg
- dir2
- dir3
- file3.jpg
- Then rclone will create the following albums with the following files in
- - images
- - file1.jpg
- - images/dir
- - file2.jpg
- - images/dir2/dir3
- - file3.jpg
- This means that you can use the album path pretty much like a normal
- filesystem and it is a good target for repeated syncing.
- The shared-album directory shows albums shared with you or by you. This
- is similar to the Sharing tab in the Google Photos web interface.
- Limitations
- Only images and videos can be uploaded. If you attempt to upload non
- videos or images or formats that Google Photos doesn’t understand,
- rclone will upload the file, then Google Photos will give an error when
- it is put turned into a media item.
- Note that all media items uploaded to Google Photos through the API are
- stored in full resolution at “original quality” and WILL count towards
- your storage quota in your Google Account. The API does NOT offer a way
- to upload in “high quality” mode..
- Downloading Images
- When Images are downloaded this strips EXIF location (according to the
- docs and my tests). This is a limitation of the Google Photos API and is
- covered by bug #112096115.
- THE CURRENT GOOGLE API DOES NOT ALLOW PHOTOS TO BE DOWNLOADED AT
- ORIGINAL RESOLUTION. THIS IS VERY IMPORTANT IF YOU ARE, FOR EXAMPLE,
- RELYING ON “GOOGLE PHOTOS” AS A BACKUP OF YOUR PHOTOS. YOU WILL NOT BE
- ABLE TO USE RCLONE TO REDOWNLOAD ORIGINAL IMAGES. YOU COULD USE ‘GOOGLE
- TAKEOUT’ TO RECOVER THE ORIGINAL PHOTOS AS A LAST RESORT
- Downloading Videos
- When videos are downloaded they are downloaded in a really compressed
- version of the video compared to downloading it via the Google Photos
- web interface. This is covered by bug #113672044.
- Duplicates
- If a file name is duplicated in a directory then rclone will add the
- file ID into its name. So two files called file.jpg would then appear as
- file {123456}.jpg and file {ABCDEF}.jpg (the actual IDs are a lot longer
- alas!).
- If you upload the same image (with the same binary data) twice then
- Google Photos will deduplicate it. However it will retain the filename
- from the first upload which may confuse rclone. For example if you
- uploaded an image to upload then uploaded the same image to
- album/my_album the filename of the image in album/my_album will be what
- it was uploaded with initially, not what you uploaded it with to album.
- In practise this shouldn’t cause too many problems.
- Modified time
- The date shown of media in Google Photos is the creation date as
- determined by the EXIF information, or the upload date if that is not
- known.
- This is not changeable by rclone and is not the modification date of the
- media on local disk. This means that rclone cannot use the dates from
- Google Photos for syncing purposes.
- Size
- The Google Photos API does not return the size of media. This means that
- when syncing to Google Photos, rclone can only do a file existence
- check.
- It is possible to read the size of the media, but this needs an extra
- HTTP HEAD request per media item so is VERY SLOW and uses up a lot of
- transactions. This can be enabled with the --gphotos-read-size option or
- the read_size = true config parameter.
- If you want to use the backend with rclone mount you may need to enable
- this flag (depending on your OS and application using the photos)
- otherwise you may not be able to read media off the mount. You’ll need
- to experiment to see if it works for you without the flag.
- Albums
- Rclone can only upload files to albums it created. This is a limitation
- of the Google Photos API.
- Rclone can remove files it uploaded from albums it created only.
- Deleting files
- Rclone can remove files from albums it created, but note that the Google
- Photos API does not allow media to be deleted permanently so this media
- will still remain. See bug #109759781.
- Rclone cannot delete files anywhere except under album.
- Deleting albums
- The Google Photos API does not support deleting albums - see bug
- #135714733.
- Standard Options
- Here are the standard options specific to google photos (Google Photos).
- –gphotos-client-id
- Google Application Client Id Leave blank normally.
- - Config: client_id
- - Env Var: RCLONE_GPHOTOS_CLIENT_ID
- - Type: string
- - Default: ""
- –gphotos-client-secret
- Google Application Client Secret Leave blank normally.
- - Config: client_secret
- - Env Var: RCLONE_GPHOTOS_CLIENT_SECRET
- - Type: string
- - Default: ""
- –gphotos-read-only
- Set to make the Google Photos backend read only.
- If you choose read only then rclone will only request read only access
- to your photos, otherwise rclone will request full access.
- - Config: read_only
- - Env Var: RCLONE_GPHOTOS_READ_ONLY
- - Type: bool
- - Default: false
- Advanced Options
- Here are the advanced options specific to google photos (Google Photos).
- –gphotos-read-size
- Set to read the size of media items.
- Normally rclone does not read the size of media items since this takes
- another transaction. This isn’t necessary for syncing. However rclone
- mount needs to know the size of files in advance of reading them, so
- setting this flag when using rclone mount is recommended if you want to
- read the media.
- - Config: read_size
- - Env Var: RCLONE_GPHOTOS_READ_SIZE
- - Type: bool
- - Default: false
- HTTP
- The HTTP remote is a read only remote for reading files of a webserver.
- The webserver should provide file listings which rclone will read and
- turn into a remote. This has been tested with common webservers such as
- Apache/Nginx/Caddy and will likely work with file listings from most web
- servers. (If it doesn’t then please file an issue, or send a pull
- request!)
- Paths are specified as remote: or remote:path/to/dir.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / http Connection
- \ "http"
- [snip]
- Storage> http
- URL of http host to connect to
- Choose a number from below, or type in your own value
- 1 / Connect to example.com
- \ "https://example.com"
- url> https://beta.rclone.org
- Remote config
- --------------------
- [remote]
- url = https://beta.rclone.org
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Current remotes:
- Name Type
- ==== ====
- remote http
- e) Edit existing remote
- n) New remote
- d) Delete remote
- r) Rename remote
- c) Copy remote
- s) Set configuration password
- q) Quit config
- e/n/d/r/c/s/q> q
- This remote is called remote and can now be used like this
- See all the top level directories
- rclone lsd remote:
- List the contents of a directory
- rclone ls remote:directory
- Sync the remote directory to /home/local/directory, deleting any excess
- files.
- rclone sync remote:directory /home/local/directory
- Read only
- This remote is read only - you can’t upload files to an HTTP server.
- Modified time
- Most HTTP servers store time accurate to 1 second.
- Checksum
- No checksums are stored.
- Usage without a config file
- Since the http remote only has one config parameter it is easy to use
- without a config file:
- rclone lsd --http-url https://beta.rclone.org :http:
- Standard Options
- Here are the standard options specific to http (http Connection).
- –http-url
- URL of http host to connect to
- - Config: url
- - Env Var: RCLONE_HTTP_URL
- - Type: string
- - Default: ""
- - Examples:
- - “https://example.com”
- - Connect to example.com
- - “https://user:pass@example.com”
- - Connect to example.com using a username and password
- Advanced Options
- Here are the advanced options specific to http (http Connection).
- –http-headers
- Set HTTP headers for all transactions
- Use this to set additional HTTP headers for all transactions
- The input format is comma separated list of key,value pairs. Standard
- CSV encoding may be used.
- For example to set a Cookie use ‘Cookie,name=value’, or
- ‘“Cookie”,“name=value”’.
- You can set multiple headers, eg
- ‘“Cookie”,“name=value”,“Authorization”,“xxx”’.
- - Config: headers
- - Env Var: RCLONE_HTTP_HEADERS
- - Type: CommaSepList
- - Default:
- –http-no-slash
- Set this if the site doesn’t end directories with /
- Use this if your target website does not use / on the end of
- directories.
- A / on the end of a path is how rclone normally tells the difference
- between files and directories. If this flag is set, then rclone will
- treat all files with Content-Type: text/html as directories and read
- URLs from them rather than downloading them.
- Note that this may cause rclone to confuse genuine HTML files with
- directories.
- - Config: no_slash
- - Env Var: RCLONE_HTTP_NO_SLASH
- - Type: bool
- - Default: false
- –http-no-head
- Don’t use HEAD requests to find file sizes in dir listing
- If your site is being very slow to load then you can try this option.
- Normally rclone does a HEAD request for each potential file in a
- directory listing to:
- - find its size
- - check it really exists
- - check to see if it is a directory
- If you set this option, rclone will not do the HEAD request. This will
- mean
- - directory listings are much quicker
- - rclone won’t have the times or sizes of any files
- - some files that don’t exist may be in the listing
- - Config: no_head
- - Env Var: RCLONE_HTTP_NO_HEAD
- - Type: bool
- - Default: false
- Hubic
- Paths are specified as remote:path
- Paths are specified as remote:container (or remote: for the lsd
- command.) You may put subdirectories in too, eg
- remote:container/path/to/dir.
- The initial setup for Hubic involves getting a token from Hubic which
- you need to do in your browser. rclone config walks you through it.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- n) New remote
- s) Set configuration password
- n/s> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Hubic
- \ "hubic"
- [snip]
- Storage> hubic
- Hubic Client Id - leave blank normally.
- client_id>
- Hubic Client Secret - leave blank normally.
- client_secret>
- Remote config
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine
- y) Yes
- n) No
- y/n> y
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- --------------------
- [remote]
- client_id =
- client_secret =
- token = {"access_token":"XXXXXX"}
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- See the remote setup docs for how to set it up on a machine with no
- Internet browser available.
- Note that rclone runs a webserver on your local machine to collect the
- token as returned from Hubic. This only runs from the moment it opens
- your browser to the moment you get back the verification code. This is
- on http://127.0.0.1:53682/ and this it may require you to unblock it
- temporarily if you are running a host firewall.
- Once configured you can then use rclone like this,
- List containers in the top level of your Hubic
- rclone lsd remote:
- List all the files in your Hubic
- rclone ls remote:
- To copy a local directory to an Hubic directory called backup
- rclone copy /home/source remote:backup
- If you want the directory to be visible in the official _Hubic browser_,
- you need to copy your files to the default directory
- rclone copy /home/source remote:default/backup
- –fast-list
- This remote supports --fast-list which allows you to use fewer
- transactions in exchange for more memory. See the rclone docs for more
- details.
- Modified time
- The modified time is stored as metadata on the object as
- X-Object-Meta-Mtime as floating point since the epoch accurate to 1 ns.
- This is a de facto standard (used in the official python-swiftclient
- amongst others) for storing the modification time for an object.
- Note that Hubic wraps the Swift backend, so most of the properties of
- are the same.
- Standard Options
- Here are the standard options specific to hubic (Hubic).
- –hubic-client-id
- Hubic Client Id Leave blank normally.
- - Config: client_id
- - Env Var: RCLONE_HUBIC_CLIENT_ID
- - Type: string
- - Default: ""
- –hubic-client-secret
- Hubic Client Secret Leave blank normally.
- - Config: client_secret
- - Env Var: RCLONE_HUBIC_CLIENT_SECRET
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to hubic (Hubic).
- –hubic-chunk-size
- Above this size files will be chunked into a _segments container.
- Above this size files will be chunked into a _segments container. The
- default for this is 5GB which is its maximum value.
- - Config: chunk_size
- - Env Var: RCLONE_HUBIC_CHUNK_SIZE
- - Type: SizeSuffix
- - Default: 5G
- –hubic-no-chunk
- Don’t chunk files during streaming upload.
- When doing streaming uploads (eg using rcat or mount) setting this flag
- will cause the swift backend to not upload chunked files.
- This will limit the maximum upload size to 5GB. However non chunked
- files are easier to deal with and have an MD5SUM.
- Rclone will still chunk files bigger than chunk_size when doing normal
- copy operations.
- - Config: no_chunk
- - Env Var: RCLONE_HUBIC_NO_CHUNK
- - Type: bool
- - Default: false
- –hubic-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_HUBIC_ENCODING
- - Type: MultiEncoder
- - Default: Slash,InvalidUtf8
- Limitations
- This uses the normal OpenStack Swift mechanism to refresh the Swift API
- credentials and ignores the expires field returned by the Hubic API.
- The Swift API doesn’t return a correct MD5SUM for segmented files
- (Dynamic or Static Large Objects) so rclone won’t check or use the
- MD5SUM for these.
- Jottacloud
- Paths are specified as remote:path
- Paths may be as deep as required, eg remote:directory/subdirectory.
- To configure Jottacloud you will need to generate a personal security
- token in the Jottacloud web inteface. You will the option to do in your
- account security settings. Note that the web inteface may refer to this
- token as a JottaCli token.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> jotta
- Type of storage to configure.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- [snip]
- XX / JottaCloud
- \ "jottacloud"
- [snip]
- Storage> jottacloud
- ** See help for jottacloud backend at: https://rclone.org/jottacloud/ **
- Edit advanced config? (y/n)
- y) Yes
- n) No
- y/n> n
- Remote config
- Generate a personal login token here: https://www.jottacloud.com/web/secure
- Login Token> <your token here>
- Do you want to use a non standard device/mountpoint e.g. for accessing files uploaded using the official Jottacloud client?
- y) Yes
- n) No
- y/n> y
- Please select the device to use. Normally this will be Jotta
- Choose a number from below, or type in an existing value
- 1 > DESKTOP-3H31129
- 2 > fla1
- 3 > Jotta
- Devices> 3
- Please select the mountpoint to user. Normally this will be Archive
- Choose a number from below, or type in an existing value
- 1 > Archive
- 2 > Shared
- 3 > Sync
- Mountpoints> 1
- --------------------
- [jotta]
- type = jottacloud
- user = 0xC4KE@gmail.com
- token = {........}
- device = Jotta
- mountpoint = Archive
- configVersion = 1
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Once configured you can then use rclone like this,
- List directories in top level of your Jottacloud
- rclone lsd remote:
- List all the files in your Jottacloud
- rclone ls remote:
- To copy a local directory to an Jottacloud directory called backup
- rclone copy /home/source remote:backup
- Devices and Mountpoints
- The official Jottacloud client registers a device for each computer you
- install it on and then creates a mountpoint for each folder you select
- for Backup. The web interface uses a special device called Jotta for the
- Archive, Sync and Shared mountpoints. In most cases you’ll want to use
- the Jotta/Archive device/mounpoint however if you want to access files
- uploaded by any of the official clients rclone provides the option to
- select other devices and mountpoints during config.
- –fast-list
- This remote supports --fast-list which allows you to use fewer
- transactions in exchange for more memory. See the rclone docs for more
- details.
- Note that the implementation in Jottacloud always uses only a single API
- request to get the entire list, so for large folders this could lead to
- long wait time before the first results are shown.
- Modified time and hashes
- Jottacloud allows modification times to be set on objects accurate to 1
- second. These will be used to detect whether objects need syncing or
- not.
- Jottacloud supports MD5 type hashes, so you can use the --checksum flag.
- Note that Jottacloud requires the MD5 hash before upload so if the
- source does not have an MD5 checksum then the file will be cached
- temporarily on disk (wherever the TMPDIR environment variable points to)
- before it is uploaded. Small files will be cached in memory - see the
- --jottacloud-md5-memory-limit flag.
- Restricted filename characters
- In addition to the default restricted characters set the following
- characters are also replaced:
- Character Value Replacement
- ----------- ------- -------------
- " 0x22 "
- * 0x2A *
- : 0x3A :
- < 0x3C <
- > 0x3E >
- ? 0x3F ?
- | 0x7C |
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in XML
- strings.
- Deleting files
- By default rclone will send all files to the trash when deleting files.
- Due to a lack of API documentation emptying the trash is currently only
- possible via the Jottacloud website. If deleting permanently is required
- then use the --jottacloud-hard-delete flag, or set the equivalent
- environment variable.
- Versions
- Jottacloud supports file versioning. When rclone uploads a new version
- of a file it creates a new version of it. Currently rclone only supports
- retrieving the current version but older versions can be accessed via
- the Jottacloud Website.
- Quota information
- To view your current quota you can use the rclone about remote: command
- which will display your usage limit (unless it is unlimited) and the
- current usage.
- Device IDs
- Jottacloud requires each ‘device’ to be registered. Rclone brings such a
- registration to easily access your account but if you want to use
- Jottacloud together with rclone on multiple machines you NEED to create
- a seperate deviceID/deviceSecrect on each machine. You will asked during
- setting up the remote. Please be aware that this also means that copying
- the rclone config from one machine to another does NOT work with
- Jottacloud accounts. You have to create it on each machine.
- Advanced Options
- Here are the advanced options specific to jottacloud (JottaCloud).
- –jottacloud-md5-memory-limit
- Files bigger than this will be cached on disk to calculate the MD5 if
- required.
- - Config: md5_memory_limit
- - Env Var: RCLONE_JOTTACLOUD_MD5_MEMORY_LIMIT
- - Type: SizeSuffix
- - Default: 10M
- –jottacloud-hard-delete
- Delete files permanently rather than putting them into the trash.
- - Config: hard_delete
- - Env Var: RCLONE_JOTTACLOUD_HARD_DELETE
- - Type: bool
- - Default: false
- –jottacloud-unlink
- Remove existing public link to file/folder with link command rather than
- creating. Default is false, meaning link command will create or retrieve
- public link.
- - Config: unlink
- - Env Var: RCLONE_JOTTACLOUD_UNLINK
- - Type: bool
- - Default: false
- –jottacloud-upload-resume-limit
- Files bigger than this can be resumed if the upload fail’s.
- - Config: upload_resume_limit
- - Env Var: RCLONE_JOTTACLOUD_UPLOAD_RESUME_LIMIT
- - Type: SizeSuffix
- - Default: 10M
- –jottacloud-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_JOTTACLOUD_ENCODING
- - Type: MultiEncoder
- - Default:
- Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,Del,Ctl,InvalidUtf8,Dot
- Limitations
- Note that Jottacloud is case insensitive so you can’t have a file called
- “Hello.doc” and one called “hello.doc”.
- There are quite a few characters that can’t be in Jottacloud file names.
- Rclone will map these names to and from an identical looking unicode
- equivalent. For example if a file has a ? in it will be mapped to ?
- instead.
- Jottacloud only supports filenames up to 255 characters in length.
- Troubleshooting
- Jottacloud exhibits some inconsistent behaviours regarding deleted files
- and folders which may cause Copy, Move and DirMove operations to
- previously deleted paths to fail. Emptying the trash should help in such
- cases.
- Koofr
- Paths are specified as remote:path
- Paths may be as deep as required, eg remote:directory/subdirectory.
- The initial setup for Koofr involves creating an application password
- for rclone. You can do that by opening the Koofr web application, giving
- the password a nice name like rclone and clicking on generate.
- Here is an example of how to make a remote called koofr. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> koofr
- Type of storage to configure.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- [snip]
- XX / Koofr
- \ "koofr"
- [snip]
- Storage> koofr
- ** See help for koofr backend at: https://rclone.org/koofr/ **
- Your Koofr user name
- Enter a string value. Press Enter for the default ("").
- user> USER@NAME
- Your Koofr password for rclone (generate one at https://app.koofr.net/app/admin/preferences/password)
- y) Yes type in my own password
- g) Generate random password
- y/g> y
- Enter the password:
- password:
- Confirm the password:
- password:
- Edit advanced config? (y/n)
- y) Yes
- n) No
- y/n> n
- Remote config
- --------------------
- [koofr]
- type = koofr
- baseurl = https://app.koofr.net
- user = USER@NAME
- password = *** ENCRYPTED ***
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- You can choose to edit advanced config in order to enter your own
- service URL if you use an on-premise or white label Koofr instance, or
- choose an alternative mount instead of your primary storage.
- Once configured you can then use rclone like this,
- List directories in top level of your Koofr
- rclone lsd koofr:
- List all the files in your Koofr
- rclone ls koofr:
- To copy a local directory to an Koofr directory called backup
- rclone copy /home/source remote:backup
- Restricted filename characters
- In addition to the default restricted characters set the following
- characters are also replaced:
- Character Value Replacement
- ----------- ------- -------------
- \ 0x5C \
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in XML
- strings.
- Standard Options
- Here are the standard options specific to koofr (Koofr).
- –koofr-user
- Your Koofr user name
- - Config: user
- - Env Var: RCLONE_KOOFR_USER
- - Type: string
- - Default: ""
- –koofr-password
- Your Koofr password for rclone (generate one at
- https://app.koofr.net/app/admin/preferences/password)
- - Config: password
- - Env Var: RCLONE_KOOFR_PASSWORD
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to koofr (Koofr).
- –koofr-endpoint
- The Koofr API endpoint to use
- - Config: endpoint
- - Env Var: RCLONE_KOOFR_ENDPOINT
- - Type: string
- - Default: “https://app.koofr.net”
- –koofr-mountid
- Mount ID of the mount to use. If omitted, the primary mount is used.
- - Config: mountid
- - Env Var: RCLONE_KOOFR_MOUNTID
- - Type: string
- - Default: ""
- –koofr-setmtime
- Does the backend support setting modification time. Set this to false if
- you use a mount ID that points to a Dropbox or Amazon Drive backend.
- - Config: setmtime
- - Env Var: RCLONE_KOOFR_SETMTIME
- - Type: bool
- - Default: true
- –koofr-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_KOOFR_ENCODING
- - Type: MultiEncoder
- - Default: Slash,BackSlash,Del,Ctl,InvalidUtf8,Dot
- Limitations
- Note that Koofr is case insensitive so you can’t have a file called
- “Hello.doc” and one called “hello.doc”.
- Mail.ru Cloud
- Mail.ru Cloud is a cloud storage provided by a Russian internet company
- Mail.Ru Group. The official desktop client is Disk-O:, available only on
- Windows. (Please note that official sites are in Russian)
- Features highlights
- - Paths may be as deep as required, eg remote:directory/subdirectory
- - Files have a last modified time property, directories don’t
- - Deleted files are by default moved to the trash
- - Files and directories can be shared via public links
- - Partial uploads or streaming are not supported, file size must be
- known before upload
- - Maximum file size is limited to 2G for a free acount, unlimited for
- paid accounts
- - Storage keeps hash for all files and performs transparent
- deduplication, the hash algorithm is a modified SHA1
- - If a particular file is already present in storage, one can quickly
- submit file hash instead of long file upload (this optimization is
- supported by rclone)
- Configuration
- Here is an example of making a mailru configuration. First create a
- Mail.ru Cloud account and choose a tariff, then run
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Type of storage to configure.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- [snip]
- XX / Mail.ru Cloud
- \ "mailru"
- [snip]
- Storage> mailru
- User name (usually email)
- Enter a string value. Press Enter for the default ("").
- user> username@mail.ru
- Password
- y) Yes type in my own password
- g) Generate random password
- y/g> y
- Enter the password:
- password:
- Confirm the password:
- password:
- Skip full upload if there is another file with same data hash.
- This feature is called "speedup" or "put by hash". It is especially efficient
- in case of generally available files like popular books, video or audio clips
- [snip]
- Enter a boolean value (true or false). Press Enter for the default ("true").
- Choose a number from below, or type in your own value
- 1 / Enable
- \ "true"
- 2 / Disable
- \ "false"
- speedup_enable> 1
- Edit advanced config? (y/n)
- y) Yes
- n) No
- y/n> n
- Remote config
- --------------------
- [remote]
- type = mailru
- user = username@mail.ru
- pass = *** ENCRYPTED ***
- speedup_enable = true
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Configuration of this backend does not require a local web browser. You
- can use the configured backend as shown below:
- See top level directories
- rclone lsd remote:
- Make a new directory
- rclone mkdir remote:directory
- List the contents of a directory
- rclone ls remote:directory
- Sync /home/local/directory to the remote path, deleting any excess files
- in the path.
- rclone sync /home/local/directory remote:directory
- Modified time
- Files support a modification time attribute with up to 1 second
- precision. Directories do not have a modification time, which is shown
- as “Jan 1 1970”.
- Hash checksums
- Hash sums use a custom Mail.ru algorithm based on SHA1. If file size is
- less than or equal to the SHA1 block size (20 bytes), its hash is simply
- its data right-padded with zero bytes. Hash sum of a larger file is
- computed as a SHA1 sum of the file data bytes concatenated with a
- decimal representation of the data length.
- Emptying Trash
- Removing a file or directory actually moves it to the trash, which is
- not visible to rclone but can be seen in a web browser. The trashed file
- still occupies part of total quota. If you wish to empty your trash and
- free some quota, you can use the rclone cleanup remote: command, which
- will permanently delete all your trashed files. This command does not
- take any path arguments.
- Quota information
- To view your current quota you can use the rclone about remote: command
- which will display your usage limit (quota) and the current usage.
- Restricted filename characters
- In addition to the default restricted characters set the following
- characters are also replaced:
- Character Value Replacement
- ----------- ------- -------------
- " 0x22 "
- * 0x2A *
- : 0x3A :
- < 0x3C <
- > 0x3E >
- ? 0x3F ?
- \ 0x5C \
- | 0x7C |
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Limitations
- File size limits depend on your account. A single file size is limited
- by 2G for a free account and unlimited for paid tariffs. Please refer to
- the Mail.ru site for the total uploaded size limits.
- Note that Mailru is case insensitive so you can’t have a file called
- “Hello.doc” and one called “hello.doc”.
- Standard Options
- Here are the standard options specific to mailru (Mail.ru Cloud).
- –mailru-user
- User name (usually email)
- - Config: user
- - Env Var: RCLONE_MAILRU_USER
- - Type: string
- - Default: ""
- –mailru-pass
- Password
- - Config: pass
- - Env Var: RCLONE_MAILRU_PASS
- - Type: string
- - Default: ""
- –mailru-speedup-enable
- Skip full upload if there is another file with same data hash. This
- feature is called “speedup” or “put by hash”. It is especially efficient
- in case of generally available files like popular books, video or audio
- clips, because files are searched by hash in all accounts of all mailru
- users. Please note that rclone may need local memory and disk space to
- calculate content hash in advance and decide whether full upload is
- required. Also, if rclone does not know file size in advance (e.g. in
- case of streaming or partial uploads), it will not even try this
- optimization.
- - Config: speedup_enable
- - Env Var: RCLONE_MAILRU_SPEEDUP_ENABLE
- - Type: bool
- - Default: true
- - Examples:
- - “true”
- - Enable
- - “false”
- - Disable
- Advanced Options
- Here are the advanced options specific to mailru (Mail.ru Cloud).
- –mailru-speedup-file-patterns
- Comma separated list of file name patterns eligible for speedup (put by
- hash). Patterns are case insensitive and can contain ’*’ or ‘?’ meta
- characters.
- - Config: speedup_file_patterns
- - Env Var: RCLONE_MAILRU_SPEEDUP_FILE_PATTERNS
- - Type: string
- - Default: “_.mkv,_.avi,_.mp4,_.mp3,_.zip,_.gz,_.rar,_.pdf”
- - Examples:
- - ""
- - Empty list completely disables speedup (put by hash).
- - "*"
- - All files will be attempted for speedup.
- - “_.mkv,_.avi,_.mp4,_.mp3”
- - Only common audio/video files will be tried for put by hash.
- - “_.zip,_.gz,_.rar,_.pdf”
- - Only common archives or PDF books will be tried for speedup.
- –mailru-speedup-max-disk
- This option allows you to disable speedup (put by hash) for large files
- (because preliminary hashing can exhaust you RAM or disk space)
- - Config: speedup_max_disk
- - Env Var: RCLONE_MAILRU_SPEEDUP_MAX_DISK
- - Type: SizeSuffix
- - Default: 3G
- - Examples:
- - “0”
- - Completely disable speedup (put by hash).
- - “1G”
- - Files larger than 1Gb will be uploaded directly.
- - “3G”
- - Choose this option if you have less than 3Gb free on local
- disk.
- –mailru-speedup-max-memory
- Files larger than the size given below will always be hashed on disk.
- - Config: speedup_max_memory
- - Env Var: RCLONE_MAILRU_SPEEDUP_MAX_MEMORY
- - Type: SizeSuffix
- - Default: 32M
- - Examples:
- - “0”
- - Preliminary hashing will always be done in a temporary disk
- location.
- - “32M”
- - Do not dedicate more than 32Mb RAM for preliminary hashing.
- - “256M”
- - You have at most 256Mb RAM free for hash calculations.
- –mailru-check-hash
- What should copy do if file checksum is mismatched or invalid
- - Config: check_hash
- - Env Var: RCLONE_MAILRU_CHECK_HASH
- - Type: bool
- - Default: true
- - Examples:
- - “true”
- - Fail with error.
- - “false”
- - Ignore and continue.
- –mailru-user-agent
- HTTP user agent used internally by client. Defaults to “rclone/VERSION”
- or “–user-agent” provided on command line.
- - Config: user_agent
- - Env Var: RCLONE_MAILRU_USER_AGENT
- - Type: string
- - Default: ""
- –mailru-quirks
- Comma separated list of internal maintenance flags. This option must not
- be used by an ordinary user. It is intended only to facilitate remote
- troubleshooting of backend issues. Strict meaning of flags is not
- documented and not guaranteed to persist between releases. Quirks will
- be removed when the backend grows stable. Supported quirks: atomicmkdir
- binlist gzip insecure retry400
- - Config: quirks
- - Env Var: RCLONE_MAILRU_QUIRKS
- - Type: string
- - Default: ""
- –mailru-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_MAILRU_ENCODING
- - Type: MultiEncoder
- - Default:
- Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,Del,Ctl,InvalidUtf8,Dot
- Mega
- Mega is a cloud storage and file hosting service known for its security
- feature where all files are encrypted locally before they are uploaded.
- This prevents anyone (including employees of Mega) from accessing the
- files without knowledge of the key used for encryption.
- This is an rclone backend for Mega which supports the file transfer
- features of Mega using the same client side encryption.
- Paths are specified as remote:path
- Paths may be as deep as required, eg remote:directory/subdirectory.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Mega
- \ "mega"
- [snip]
- Storage> mega
- User name
- user> you@example.com
- Password.
- y) Yes type in my own password
- g) Generate random password
- n) No leave this optional password blank
- y/g/n> y
- Enter the password:
- password:
- Confirm the password:
- password:
- Remote config
- --------------------
- [remote]
- type = mega
- user = you@example.com
- pass = *** ENCRYPTED ***
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- NOTE: The encryption keys need to have been already generated after a
- regular login via the browser, otherwise attempting to use the
- credentials in rclone will fail.
- Once configured you can then use rclone like this,
- List directories in top level of your Mega
- rclone lsd remote:
- List all the files in your Mega
- rclone ls remote:
- To copy a local directory to an Mega directory called backup
- rclone copy /home/source remote:backup
- Modified time and hashes
- Mega does not support modification times or hashes yet.
- Restricted filename characters
- Character Value Replacement
- ----------- ------- -------------
- NUL 0x00 ␀
- / 0x2F /
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Duplicated files
- Mega can have two files with exactly the same name and path (unlike a
- normal file system).
- Duplicated files cause problems with the syncing and you will see
- messages in the log about duplicates.
- Use rclone dedupe to fix duplicated files.
- Failure to log-in
- Mega remotes seem to get blocked (reject logins) under “heavy use”. We
- haven’t worked out the exact blocking rules but it seems to be related
- to fast paced, sucessive rclone commands.
- For example, executing this command 90 times in a row
- rclone link remote:file will cause the remote to become “blocked”. This
- is not an abnormal situation, for example if you wish to get the public
- links of a directory with hundred of files… After more or less a week,
- the remote will remote accept rclone logins normally again.
- You can mitigate this issue by mounting the remote it with rclone mount.
- This will log-in when mounting and a log-out when unmounting only. You
- can also run rclone rcd and then use rclone rc to run the commands over
- the API to avoid logging in each time.
- Rclone does not currently close mega sessions (you can see them in the
- web interface), however closing the sessions does not solve the issue.
- If you space rclone commands by 3 seconds it will avoid blocking the
- remote. We haven’t identified the exact blocking rules, so perhaps one
- could execute the command 80 times without waiting and avoid blocking by
- waiting 3 seconds, then continuing…
- Note that this has been observed by trial and error and might not be set
- in stone.
- Other tools seem not to produce this blocking effect, as they use a
- different working approach (state-based, using sessionIDs instead of
- log-in) which isn’t compatible with the current stateless rclone
- approach.
- Note that once blocked, the use of other tools (such as megacmd) is not
- a sure workaround: following megacmd login times have been observed in
- sucession for blocked remote: 7 minutes, 20 min, 30min, 30 min, 30min.
- Web access looks unaffected though.
- Investigation is continuing in relation to workarounds based on
- timeouts, pacers, retrials and tpslimits - if you discover something
- relevant, please post on the forum.
- So, if rclone was working nicely and suddenly you are unable to log-in
- and you are sure the user and the password are correct, likely you have
- got the remote blocked for a while.
- Standard Options
- Here are the standard options specific to mega (Mega).
- –mega-user
- User name
- - Config: user
- - Env Var: RCLONE_MEGA_USER
- - Type: string
- - Default: ""
- –mega-pass
- Password.
- - Config: pass
- - Env Var: RCLONE_MEGA_PASS
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to mega (Mega).
- –mega-debug
- Output more debug from Mega.
- If this flag is set (along with -vv) it will print further debugging
- information from the mega backend.
- - Config: debug
- - Env Var: RCLONE_MEGA_DEBUG
- - Type: bool
- - Default: false
- –mega-hard-delete
- Delete files permanently rather than putting them into the trash.
- Normally the mega backend will put all deletions into the trash rather
- than permanently deleting them. If you specify this then rclone will
- permanently delete objects instead.
- - Config: hard_delete
- - Env Var: RCLONE_MEGA_HARD_DELETE
- - Type: bool
- - Default: false
- –mega-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_MEGA_ENCODING
- - Type: MultiEncoder
- - Default: Slash,InvalidUtf8,Dot
- Limitations
- This backend uses the go-mega go library which is an opensource go
- library implementing the Mega API. There doesn’t appear to be any
- documentation for the mega protocol beyond the mega C++ SDK source code
- so there are likely quite a few errors still remaining in this library.
- Mega allows duplicate files which may confuse rclone.
- Memory
- The memory backend is an in RAM backend. It does not persist its data -
- use the local backend for that.
- The memory backend behaves like a bucket based remote (eg like s3).
- Because it has no parameters you can just use it with the :memory:
- remote name.
- You can configure it as a remote like this with rclone config too if you
- want to:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- [snip]
- XX / Memory
- \ "memory"
- [snip]
- Storage> memory
- ** See help for memory backend at: https://rclone.org/memory/ **
- Remote config
- --------------------
- [remote]
- type = memory
- --------------------
- y) Yes this is OK (default)
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Because the memory backend isn’t persistent it is most useful for
- testing or with an rclone server or rclone mount, eg
- rclone mount :memory: /mnt/tmp
- rclone serve webdav :memory:
- rclone serve sftp :memory:
- Modified time and hashes
- The memory backend supports MD5 hashes and modification times accurate
- to 1 nS.
- Restricted filename characters
- The memory backend replaces the default restricted characters set.
- Microsoft Azure Blob Storage
- Paths are specified as remote:container (or remote: for the lsd
- command.) You may put subdirectories in too, eg
- remote:container/path/to/dir.
- Here is an example of making a Microsoft Azure Blob Storage
- configuration. For a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Microsoft Azure Blob Storage
- \ "azureblob"
- [snip]
- Storage> azureblob
- Storage Account Name
- account> account_name
- Storage Account Key
- key> base64encodedkey==
- Endpoint for the service - leave blank normally.
- endpoint>
- Remote config
- --------------------
- [remote]
- account = account_name
- key = base64encodedkey==
- endpoint =
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- See all containers
- rclone lsd remote:
- Make a new container
- rclone mkdir remote:container
- List the contents of a container
- rclone ls remote:container
- Sync /home/local/directory to the remote container, deleting any excess
- files in the container.
- rclone sync /home/local/directory remote:container
- –fast-list
- This remote supports --fast-list which allows you to use fewer
- transactions in exchange for more memory. See the rclone docs for more
- details.
- Modified time
- The modified time is stored as metadata on the object with the mtime
- key. It is stored using RFC3339 Format time with nanosecond precision.
- The metadata is supplied during directory listings so there is no
- overhead to using it.
- Restricted filename characters
- In addition to the default restricted characters set the following
- characters are also replaced:
- Character Value Replacement
- ----------- ------- -------------
- / 0x2F /
- \ 0x5C \
- File names can also not end with the following characters. These only
- get replaced if they are last character in the name:
- Character Value Replacement
- ----------- ------- -------------
- . 0x2E .
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Hashes
- MD5 hashes are stored with blobs. However blobs that were uploaded in
- chunks only have an MD5 if the source remote was capable of MD5 hashes,
- eg the local disk.
- Authenticating with Azure Blob Storage
- Rclone has 3 ways of authenticating with Azure Blob Storage:
- Account and Key
- This is the most straight forward and least flexible way. Just fill in
- the account and key lines and leave the rest blank.
- SAS URL
- This can be an account level SAS URL or container level SAS URL
- To use it leave account, key blank and fill in sas_url.
- Account level SAS URL or container level SAS URL can be obtained from
- Azure portal or Azure Storage Explorer. To get a container level SAS URL
- right click on a container in the Azure Blob explorer in the Azure
- portal.
- If You use container level SAS URL, rclone operations are permitted only
- on particular container, eg
- rclone ls azureblob:container or rclone ls azureblob:
- Since container name already exists in SAS URL, you can leave it empty
- as well.
- However these will not work
- rclone lsd azureblob:
- rclone ls azureblob:othercontainer
- This would be useful for temporarily allowing third parties access to a
- single container or putting credentials into an untrusted environment.
- Multipart uploads
- Rclone supports multipart uploads with Azure Blob storage. Files bigger
- than 256MB will be uploaded using chunked upload by default.
- The files will be uploaded in parallel in 4MB chunks (by default). Note
- that these chunks are buffered in memory and there may be up to
- --transfers of them being uploaded at once.
- Files can’t be split into more than 50,000 chunks so by default, so the
- largest file that can be uploaded with 4MB chunk size is 195GB. Above
- this rclone will double the chunk size until it creates less than 50,000
- chunks. By default this will mean a maximum file size of 3.2TB can be
- uploaded. This can be raised to 5TB using --azureblob-chunk-size 100M.
- Note that rclone doesn’t commit the block list until the end of the
- upload which means that there is a limit of 9.5TB of multipart uploads
- in progress as Azure won’t allow more than that amount of uncommitted
- blocks.
- Standard Options
- Here are the standard options specific to azureblob (Microsoft Azure
- Blob Storage).
- –azureblob-account
- Storage Account Name (leave blank to use SAS URL or Emulator)
- - Config: account
- - Env Var: RCLONE_AZUREBLOB_ACCOUNT
- - Type: string
- - Default: ""
- –azureblob-key
- Storage Account Key (leave blank to use SAS URL or Emulator)
- - Config: key
- - Env Var: RCLONE_AZUREBLOB_KEY
- - Type: string
- - Default: ""
- –azureblob-sas-url
- SAS URL for container level access only (leave blank if using
- account/key or Emulator)
- - Config: sas_url
- - Env Var: RCLONE_AZUREBLOB_SAS_URL
- - Type: string
- - Default: ""
- –azureblob-use-emulator
- Uses local storage emulator if provided as ‘true’ (leave blank if using
- real azure storage endpoint)
- - Config: use_emulator
- - Env Var: RCLONE_AZUREBLOB_USE_EMULATOR
- - Type: bool
- - Default: false
- Advanced Options
- Here are the advanced options specific to azureblob (Microsoft Azure
- Blob Storage).
- –azureblob-endpoint
- Endpoint for the service Leave blank normally.
- - Config: endpoint
- - Env Var: RCLONE_AZUREBLOB_ENDPOINT
- - Type: string
- - Default: ""
- –azureblob-upload-cutoff
- Cutoff for switching to chunked upload (<= 256MB).
- - Config: upload_cutoff
- - Env Var: RCLONE_AZUREBLOB_UPLOAD_CUTOFF
- - Type: SizeSuffix
- - Default: 256M
- –azureblob-chunk-size
- Upload chunk size (<= 100MB).
- Note that this is stored in memory and there may be up to “–transfers”
- chunks stored at once in memory.
- - Config: chunk_size
- - Env Var: RCLONE_AZUREBLOB_CHUNK_SIZE
- - Type: SizeSuffix
- - Default: 4M
- –azureblob-list-chunk
- Size of blob list.
- This sets the number of blobs requested in each listing chunk. Default
- is the maximum, 5000. “List blobs” requests are permitted 2 minutes per
- megabyte to complete. If an operation is taking longer than 2 minutes
- per megabyte on average, it will time out ( source ). This can be used
- to limit the number of blobs items to return, to avoid the time out.
- - Config: list_chunk
- - Env Var: RCLONE_AZUREBLOB_LIST_CHUNK
- - Type: int
- - Default: 5000
- –azureblob-access-tier
- Access tier of blob: hot, cool or archive.
- Archived blobs can be restored by setting access tier to hot or cool.
- Leave blank if you intend to use default access tier, which is set at
- account level
- If there is no “access tier” specified, rclone doesn’t apply any tier.
- rclone performs “Set Tier” operation on blobs while uploading, if
- objects are not modified, specifying “access tier” to new one will have
- no effect. If blobs are in “archive tier” at remote, trying to perform
- data transfer operations from remote will not be allowed. User should
- first restore by tiering blob to “Hot” or “Cool”.
- - Config: access_tier
- - Env Var: RCLONE_AZUREBLOB_ACCESS_TIER
- - Type: string
- - Default: ""
- –azureblob-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_AZUREBLOB_ENCODING
- - Type: MultiEncoder
- - Default: Slash,BackSlash,Del,Ctl,RightPeriod,InvalidUtf8
- Limitations
- MD5 sums are only uploaded with chunked files if the source has an MD5
- sum. This will always be the case for a local to azure copy.
- Azure Storage Emulator Support
- You can test rlcone with storage emulator locally, to do this make sure
- azure storage emulator installed locally and set up a new remote with
- rclone config follow instructions described in introduction, set
- use_emulator config as true, you do not need to provide default account
- name or key if using emulator.
- Microsoft OneDrive
- Paths are specified as remote:path
- Paths may be as deep as required, eg remote:directory/subdirectory.
- The initial setup for OneDrive involves getting a token from Microsoft
- which you need to do in your browser. rclone config walks you through
- it.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- e) Edit existing remote
- n) New remote
- d) Delete remote
- r) Rename remote
- c) Copy remote
- s) Set configuration password
- q) Quit config
- e/n/d/r/c/s/q> n
- name> remote
- Type of storage to configure.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- [snip]
- XX / Microsoft OneDrive
- \ "onedrive"
- [snip]
- Storage> onedrive
- Microsoft App Client Id
- Leave blank normally.
- Enter a string value. Press Enter for the default ("").
- client_id>
- Microsoft App Client Secret
- Leave blank normally.
- Enter a string value. Press Enter for the default ("").
- client_secret>
- Edit advanced config? (y/n)
- y) Yes
- n) No
- y/n> n
- Remote config
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine
- y) Yes
- n) No
- y/n> y
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- Choose a number from below, or type in an existing value
- 1 / OneDrive Personal or Business
- \ "onedrive"
- 2 / Sharepoint site
- \ "sharepoint"
- 3 / Type in driveID
- \ "driveid"
- 4 / Type in SiteID
- \ "siteid"
- 5 / Search a Sharepoint site
- \ "search"
- Your choice> 1
- Found 1 drives, please select the one you want to use:
- 0: OneDrive (business) id=b!Eqwertyuiopasdfghjklzxcvbnm-7mnbvcxzlkjhgfdsapoiuytrewqk
- Chose drive to use:> 0
- Found drive 'root' of type 'business', URL: https://org-my.sharepoint.com/personal/you/Documents
- Is that okay?
- y) Yes
- n) No
- y/n> y
- --------------------
- [remote]
- type = onedrive
- token = {"access_token":"youraccesstoken","token_type":"Bearer","refresh_token":"yourrefreshtoken","expiry":"2018-08-26T22:39:52.486512262+08:00"}
- drive_id = b!Eqwertyuiopasdfghjklzxcvbnm-7mnbvcxzlkjhgfdsapoiuytrewqk
- drive_type = business
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- See the remote setup docs for how to set it up on a machine with no
- Internet browser available.
- Note that rclone runs a webserver on your local machine to collect the
- token as returned from Microsoft. This only runs from the moment it
- opens your browser to the moment you get back the verification code.
- This is on http://127.0.0.1:53682/ and this it may require you to
- unblock it temporarily if you are running a host firewall.
- Once configured you can then use rclone like this,
- List directories in top level of your OneDrive
- rclone lsd remote:
- List all the files in your OneDrive
- rclone ls remote:
- To copy a local directory to an OneDrive directory called backup
- rclone copy /home/source remote:backup
- Getting your own Client ID and Key
- You can use your own Client ID if the default (client_id left blank) one
- doesn’t work for you or you see lots of throttling. The default Client
- ID and Key is shared by all rclone users when performing requests.
- If you are having problems with them (E.g., seeing a lot of throttling),
- you can get your own Client ID and Key by following the steps below:
- 1. Open
- https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade,
- then click New registration.
- 2. Enter a name for your app, choose account type
- Any Azure AD directory - Multitenant, select Web in Redirect URI
- Enter http://localhost:53682/ and click Register. Copy and keep the
- Application (client) ID under the app name for later use.
- 3. Under manage select Certificates & secrets, click New client secret.
- Copy and keep that secret for later use.
- 4. Under manage select API permissions, click Add a permission and
- select Microsoft Graph then select delegated permissions.
- 5. Search and select the follwing permssions: Files.Read,
- Files.ReadWrite, Files.Read.All, Files.ReadWrite.All,
- offline_access, User.Read. Once selected click Add permissions at
- the bottom.
- Now the application is complete. Run rclone config to create or edit a
- OneDrive remote. Supply the app ID and password as Client ID and Secret,
- respectively. rclone will walk you through the remaining steps.
- Modification time and hashes
- OneDrive allows modification times to be set on objects accurate to 1
- second. These will be used to detect whether objects need syncing or
- not.
- OneDrive personal supports SHA1 type hashes. OneDrive for business and
- Sharepoint Server support QuickXorHash.
- For all types of OneDrive you can use the --checksum flag.
- Restricted filename characters
- In addition to the default restricted characters set the following
- characters are also replaced:
- Character Value Replacement
- ----------- ------- -------------
- " 0x22 "
- * 0x2A *
- : 0x3A :
- < 0x3C <
- > 0x3E >
- ? 0x3F ?
- \ 0x5C \
- | 0x7C |
- # 0x23 #
- % 0x25 %
- File names can also not end with the following characters. These only
- get replaced if they are last character in the name:
- Character Value Replacement
- ----------- ------- -------------
- SP 0x20 ␠
- . 0x2E .
- File names can also not begin with the following characters. These only
- get replaced if they are first character in the name:
- Character Value Replacement
- ----------- ------- -------------
- SP 0x20 ␠
- ~ 0x7E ~
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Deleting files
- Any files you delete with rclone will end up in the trash. Microsoft
- doesn’t provide an API to permanently delete files, nor to empty the
- trash, so you will have to do that with one of Microsoft’s apps or via
- the OneDrive website.
- Standard Options
- Here are the standard options specific to onedrive (Microsoft OneDrive).
- –onedrive-client-id
- Microsoft App Client Id Leave blank normally.
- - Config: client_id
- - Env Var: RCLONE_ONEDRIVE_CLIENT_ID
- - Type: string
- - Default: ""
- –onedrive-client-secret
- Microsoft App Client Secret Leave blank normally.
- - Config: client_secret
- - Env Var: RCLONE_ONEDRIVE_CLIENT_SECRET
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to onedrive (Microsoft OneDrive).
- –onedrive-chunk-size
- Chunk size to upload files with - must be multiple of 320k (327,680
- bytes).
- Above this size files will be chunked - must be multiple of 320k
- (327,680 bytes). Note that the chunks will be buffered into memory.
- - Config: chunk_size
- - Env Var: RCLONE_ONEDRIVE_CHUNK_SIZE
- - Type: SizeSuffix
- - Default: 10M
- –onedrive-drive-id
- The ID of the drive to use
- - Config: drive_id
- - Env Var: RCLONE_ONEDRIVE_DRIVE_ID
- - Type: string
- - Default: ""
- –onedrive-drive-type
- The type of the drive ( personal | business | documentLibrary )
- - Config: drive_type
- - Env Var: RCLONE_ONEDRIVE_DRIVE_TYPE
- - Type: string
- - Default: ""
- –onedrive-expose-onenote-files
- Set to make OneNote files show up in directory listings.
- By default rclone will hide OneNote files in directory listings because
- operations like “Open” and “Update” won’t work on them. But this
- behaviour may also prevent you from deleting them. If you want to delete
- OneNote files or otherwise want them to show up in directory listing,
- set this option.
- - Config: expose_onenote_files
- - Env Var: RCLONE_ONEDRIVE_EXPOSE_ONENOTE_FILES
- - Type: bool
- - Default: false
- –onedrive-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_ONEDRIVE_ENCODING
- - Type: MultiEncoder
- - Default:
- Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,Hash,Percent,BackSlash,Del,Ctl,LeftSpace,LeftTilde,RightSpace,RightPeriod,InvalidUtf8,Dot
- Limitations
- Naming
- Note that OneDrive is case insensitive so you can’t have a file called
- “Hello.doc” and one called “hello.doc”.
- There are quite a few characters that can’t be in OneDrive file names.
- These can’t occur on Windows platforms, but on non-Windows platforms
- they are common. Rclone will map these names to and from an identical
- looking unicode equivalent. For example if a file has a ? in it will be
- mapped to ? instead.
- File sizes
- The largest allowed file sizes are 15GB for OneDrive for Business and
- 35GB for OneDrive Personal (Updated 4 Jan 2019).
- Path length
- The entire path, including the file name, must contain fewer than 400
- characters for OneDrive, OneDrive for Business and SharePoint Online. If
- you are encrypting file and folder names with rclone, you may want to
- pay attention to this limitation because the encrypted names are
- typically longer than the original ones.
- Number of files
- OneDrive seems to be OK with at least 50,000 files in a folder, but at
- 100,000 rclone will get errors listing the directory like
- couldn’t list files: UnknownError:. See #2707 for more info.
- An official document about the limitations for different types of
- OneDrive can be found here.
- Versioning issue
- Every change in OneDrive causes the service to create a new version.
- This counts against a users quota. For example changing the modification
- time of a file creates a second version, so the file is using twice the
- space.
- The copy is the only rclone command affected by this as we copy the file
- and then afterwards set the modification time to match the source file.
- NOTE: Starting October 2018, users will no longer be able to disable
- versioning by default. This is because Microsoft has brought an update
- to the mechanism. To change this new default setting, a PowerShell
- command is required to be run by a SharePoint admin. If you are an
- admin, you can run these commands in PowerShell to change that setting:
- 1. Install-Module -Name Microsoft.Online.SharePoint.PowerShell (in case
- you haven’t installed this already)
- 2. Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
- 3. Connect-SPOService -Url https://YOURSITE-admin.sharepoint.com -Credential YOU@YOURSITE.COM
- (replacing YOURSITE, YOU, YOURSITE.COM with the actual values; this
- will prompt for your credentials)
- 4. Set-SPOTenant -EnableMinimumVersionRequirement $False
- 5. Disconnect-SPOService (to disconnect from the server)
- _Below are the steps for normal users to disable versioning. If you
- don’t see the “No Versioning” option, make sure the above requirements
- are met._
- User Weropol has found a method to disable versioning on OneDrive
- 1. Open the settings menu by clicking on the gear symbol at the top of
- the OneDrive Business page.
- 2. Click Site settings.
- 3. Once on the Site settings page, navigate to Site Administration >
- Site libraries and lists.
- 4. Click Customize “Documents”.
- 5. Click General Settings > Versioning Settings.
- 6. Under Document Version History select the option No versioning.
- Note: This will disable the creation of new file versions, but will
- not remove any previous versions. Your documents are safe.
- 7. Apply the changes by clicking OK.
- 8. Use rclone to upload or modify files. (I also use the
- –no-update-modtime flag)
- 9. Restore the versioning settings after using rclone. (Optional)
- Troubleshooting
- Unexpected file size/hash differences on Sharepoint
- It is a known issue that Sharepoint (not OneDrive or OneDrive for
- Business) silently modifies uploaded files, mainly Office files (.docx,
- .xlsx, etc.), causing file size and hash checks to fail. To use rclone
- with such affected files on Sharepoint, you may disable these checks
- with the following command line arguments:
- --ignore-checksum --ignore-size
- Replacing/deleting existing files on Sharepoint gets “item not found”
- It is a known issue that Sharepoint (not OneDrive or OneDrive for
- Business) may return “item not found” errors when users try to replace
- or delete uploaded files; this seems to mainly affect Office files
- (.docx, .xlsx, etc.). As a workaround, you may use the
- --backup-dir <BACKUP_DIR> command line argument so rclone moves the
- files to be replaced/deleted into a given backup directory (instead of
- directly replacing/deleting them). For example, to instruct rclone to
- move the files into the directory rclone-backup-dir on backend
- mysharepoint, you may use:
- --backup-dir mysharepoint:rclone-backup-dir
- access_denied (AADSTS65005)
- Error: access_denied
- Code: AADSTS65005
- Description: Using application 'rclone' is currently not supported for your organization [YOUR_ORGANIZATION] because it is in an unmanaged state. An administrator needs to claim ownership of the company by DNS validation of [YOUR_ORGANIZATION] before the application rclone can be provisioned.
- This means that rclone can’t use the OneDrive for Business API with your
- account. You can’t do much about it, maybe write an email to your
- admins.
- However, there are other ways to interact with your OneDrive account.
- Have a look at the webdav backend: https://rclone.org/webdav/#sharepoint
- invalid_grant (AADSTS50076)
- Error: invalid_grant
- Code: AADSTS50076
- Description: Due to a configuration change made by your administrator, or because you moved to a new location, you must use multi-factor authentication to access '...'.
- If you see the error above after enabling multi-factor authentication
- for your account, you can fix it by refreshing your OAuth refresh token.
- To do that, run rclone config, and choose to edit your OneDrive backend.
- Then, you don’t need to actually make any changes until you reach this
- question: Already have a token - refresh?. For this question, answer y
- and go through the process to refresh your token, just like the first
- time the backend is configured. After this, rclone should work again for
- this backend.
- OpenDrive
- Paths are specified as remote:path
- Paths may be as deep as required, eg remote:directory/subdirectory.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- n) New remote
- d) Delete remote
- q) Quit config
- e/n/d/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / OpenDrive
- \ "opendrive"
- [snip]
- Storage> opendrive
- Username
- username>
- Password
- y) Yes type in my own password
- g) Generate random password
- y/g> y
- Enter the password:
- password:
- Confirm the password:
- password:
- --------------------
- [remote]
- username =
- password = *** ENCRYPTED ***
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- List directories in top level of your OpenDrive
- rclone lsd remote:
- List all the files in your OpenDrive
- rclone ls remote:
- To copy a local directory to an OpenDrive directory called backup
- rclone copy /home/source remote:backup
- Modified time and MD5SUMs
- OpenDrive allows modification times to be set on objects accurate to 1
- second. These will be used to detect whether objects need syncing or
- not.
- Restricted filename characters
- Character Value Replacement
- ----------- ------- -------------
- NUL 0x00 ␀
- / 0x2F /
- " 0x22 "
- * 0x2A *
- : 0x3A :
- < 0x3C <
- > 0x3E >
- ? 0x3F ?
- \ 0x5C \
- | 0x7C |
- File names can also not begin or end with the following characters.
- These only get replaced if they are the first or last character in the
- name:
- Character Value Replacement
- ----------- ------- -------------
- SP 0x20 ␠
- HT 0x09 ␉
- LF 0x0A ␊
- VT 0x0B ␋
- CR 0x0D ␍
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Standard Options
- Here are the standard options specific to opendrive (OpenDrive).
- –opendrive-username
- Username
- - Config: username
- - Env Var: RCLONE_OPENDRIVE_USERNAME
- - Type: string
- - Default: ""
- –opendrive-password
- Password.
- - Config: password
- - Env Var: RCLONE_OPENDRIVE_PASSWORD
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to opendrive (OpenDrive).
- –opendrive-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_OPENDRIVE_ENCODING
- - Type: MultiEncoder
- - Default:
- Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,LeftSpace,LeftCrLfHtVt,RightSpace,RightCrLfHtVt,InvalidUtf8,Dot
- –opendrive-chunk-size
- Files will be uploaded in chunks this size.
- Note that these chunks are buffered in memory so increasing them will
- increase memory use.
- - Config: chunk_size
- - Env Var: RCLONE_OPENDRIVE_CHUNK_SIZE
- - Type: SizeSuffix
- - Default: 10M
- Limitations
- Note that OpenDrive is case insensitive so you can’t have a file called
- “Hello.doc” and one called “hello.doc”.
- There are quite a few characters that can’t be in OpenDrive file names.
- These can’t occur on Windows platforms, but on non-Windows platforms
- they are common. Rclone will map these names to and from an identical
- looking unicode equivalent. For example if a file has a ? in it will be
- mapped to ? instead.
- QingStor
- Paths are specified as remote:bucket (or remote: for the lsd command.)
- You may put subdirectories in too, eg remote:bucket/path/to/dir.
- Here is an example of making an QingStor configuration. First run
- rclone config
- This will guide you through an interactive setup process.
- No remotes found - make a new one
- n) New remote
- r) Rename remote
- c) Copy remote
- s) Set configuration password
- q) Quit config
- n/r/c/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / QingStor Object Storage
- \ "qingstor"
- [snip]
- Storage> qingstor
- Get QingStor credentials from runtime. Only applies if access_key_id and secret_access_key is blank.
- Choose a number from below, or type in your own value
- 1 / Enter QingStor credentials in the next step
- \ "false"
- 2 / Get QingStor credentials from the environment (env vars or IAM)
- \ "true"
- env_auth> 1
- QingStor Access Key ID - leave blank for anonymous access or runtime credentials.
- access_key_id> access_key
- QingStor Secret Access Key (password) - leave blank for anonymous access or runtime credentials.
- secret_access_key> secret_key
- Enter a endpoint URL to connection QingStor API.
- Leave blank will use the default value "https://qingstor.com:443"
- endpoint>
- Zone connect to. Default is "pek3a".
- Choose a number from below, or type in your own value
- / The Beijing (China) Three Zone
- 1 | Needs location constraint pek3a.
- \ "pek3a"
- / The Shanghai (China) First Zone
- 2 | Needs location constraint sh1a.
- \ "sh1a"
- zone> 1
- Number of connnection retry.
- Leave blank will use the default value "3".
- connection_retries>
- Remote config
- --------------------
- [remote]
- env_auth = false
- access_key_id = access_key
- secret_access_key = secret_key
- endpoint =
- zone = pek3a
- connection_retries =
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- This remote is called remote and can now be used like this
- See all buckets
- rclone lsd remote:
- Make a new bucket
- rclone mkdir remote:bucket
- List the contents of a bucket
- rclone ls remote:bucket
- Sync /home/local/directory to the remote bucket, deleting any excess
- files in the bucket.
- rclone sync /home/local/directory remote:bucket
- –fast-list
- This remote supports --fast-list which allows you to use fewer
- transactions in exchange for more memory. See the rclone docs for more
- details.
- Multipart uploads
- rclone supports multipart uploads with QingStor which means that it can
- upload files bigger than 5GB. Note that files uploaded with multipart
- upload don’t have an MD5SUM.
- Buckets and Zone
- With QingStor you can list buckets (rclone lsd) using any zone, but you
- can only access the content of a bucket from the zone it was created in.
- If you attempt to access a bucket from the wrong zone, you will get an
- error, incorrect zone, the bucket is not in 'XXX' zone.
- Authentication
- There are two ways to supply rclone with a set of QingStor credentials.
- In order of precedence:
- - Directly in the rclone configuration file (as configured by
- rclone config)
- - set access_key_id and secret_access_key
- - Runtime configuration:
- - set env_auth to true in the config file
- - Exporting the following environment variables before running
- rclone
- - Access Key ID: QS_ACCESS_KEY_ID or QS_ACCESS_KEY
- - Secret Access Key: QS_SECRET_ACCESS_KEY or QS_SECRET_KEY
- Restricted filename characters
- The control characters 0x00-0x1F and / are replaced as in the default
- restricted characters set. Note that 0x7F is not replaced.
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Standard Options
- Here are the standard options specific to qingstor (QingCloud Object
- Storage).
- –qingstor-env-auth
- Get QingStor credentials from runtime. Only applies if access_key_id and
- secret_access_key is blank.
- - Config: env_auth
- - Env Var: RCLONE_QINGSTOR_ENV_AUTH
- - Type: bool
- - Default: false
- - Examples:
- - “false”
- - Enter QingStor credentials in the next step
- - “true”
- - Get QingStor credentials from the environment (env vars or
- IAM)
- –qingstor-access-key-id
- QingStor Access Key ID Leave blank for anonymous access or runtime
- credentials.
- - Config: access_key_id
- - Env Var: RCLONE_QINGSTOR_ACCESS_KEY_ID
- - Type: string
- - Default: ""
- –qingstor-secret-access-key
- QingStor Secret Access Key (password) Leave blank for anonymous access
- or runtime credentials.
- - Config: secret_access_key
- - Env Var: RCLONE_QINGSTOR_SECRET_ACCESS_KEY
- - Type: string
- - Default: ""
- –qingstor-endpoint
- Enter a endpoint URL to connection QingStor API. Leave blank will use
- the default value “https://qingstor.com:443”
- - Config: endpoint
- - Env Var: RCLONE_QINGSTOR_ENDPOINT
- - Type: string
- - Default: ""
- –qingstor-zone
- Zone to connect to. Default is “pek3a”.
- - Config: zone
- - Env Var: RCLONE_QINGSTOR_ZONE
- - Type: string
- - Default: ""
- - Examples:
- - “pek3a”
- - The Beijing (China) Three Zone
- - Needs location constraint pek3a.
- - “sh1a”
- - The Shanghai (China) First Zone
- - Needs location constraint sh1a.
- - “gd2a”
- - The Guangdong (China) Second Zone
- - Needs location constraint gd2a.
- Advanced Options
- Here are the advanced options specific to qingstor (QingCloud Object
- Storage).
- –qingstor-connection-retries
- Number of connection retries.
- - Config: connection_retries
- - Env Var: RCLONE_QINGSTOR_CONNECTION_RETRIES
- - Type: int
- - Default: 3
- –qingstor-upload-cutoff
- Cutoff for switching to chunked upload
- Any files larger than this will be uploaded in chunks of chunk_size. The
- minimum is 0 and the maximum is 5GB.
- - Config: upload_cutoff
- - Env Var: RCLONE_QINGSTOR_UPLOAD_CUTOFF
- - Type: SizeSuffix
- - Default: 200M
- –qingstor-chunk-size
- Chunk size to use for uploading.
- When uploading files larger than upload_cutoff they will be uploaded as
- multipart uploads using this chunk size.
- Note that “–qingstor-upload-concurrency” chunks of this size are
- buffered in memory per transfer.
- If you are transferring large files over high speed links and you have
- enough memory, then increasing this will speed up the transfers.
- - Config: chunk_size
- - Env Var: RCLONE_QINGSTOR_CHUNK_SIZE
- - Type: SizeSuffix
- - Default: 4M
- –qingstor-upload-concurrency
- Concurrency for multipart uploads.
- This is the number of chunks of the same file that are uploaded
- concurrently.
- NB if you set this to > 1 then the checksums of multpart uploads become
- corrupted (the uploads themselves are not corrupted though).
- If you are uploading small numbers of large file over high speed link
- and these uploads do not fully utilize your bandwidth, then increasing
- this may help to speed up the transfers.
- - Config: upload_concurrency
- - Env Var: RCLONE_QINGSTOR_UPLOAD_CONCURRENCY
- - Type: int
- - Default: 1
- –qingstor-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_QINGSTOR_ENCODING
- - Type: MultiEncoder
- - Default: Slash,Ctl,InvalidUtf8
- Swift
- Swift refers to Openstack Object Storage. Commercial implementations of
- that being:
- - Rackspace Cloud Files
- - Memset Memstore
- - OVH Object Storage
- - Oracle Cloud Storage
- - IBM Bluemix Cloud ObjectStorage Swift
- Paths are specified as remote:container (or remote: for the lsd
- command.) You may put subdirectories in too, eg
- remote:container/path/to/dir.
- Here is an example of making a swift configuration. First run
- rclone config
- This will guide you through an interactive setup process.
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
- \ "swift"
- [snip]
- Storage> swift
- Get swift credentials from environment variables in standard OpenStack form.
- Choose a number from below, or type in your own value
- 1 / Enter swift credentials in the next step
- \ "false"
- 2 / Get swift credentials from environment vars. Leave other fields blank if using this.
- \ "true"
- env_auth> true
- User name to log in (OS_USERNAME).
- user>
- API key or password (OS_PASSWORD).
- key>
- Authentication URL for server (OS_AUTH_URL).
- Choose a number from below, or type in your own value
- 1 / Rackspace US
- \ "https://auth.api.rackspacecloud.com/v1.0"
- 2 / Rackspace UK
- \ "https://lon.auth.api.rackspacecloud.com/v1.0"
- 3 / Rackspace v2
- \ "https://identity.api.rackspacecloud.com/v2.0"
- 4 / Memset Memstore UK
- \ "https://auth.storage.memset.com/v1.0"
- 5 / Memset Memstore UK v2
- \ "https://auth.storage.memset.com/v2.0"
- 6 / OVH
- \ "https://auth.cloud.ovh.net/v3"
- auth>
- User ID to log in - optional - most swift systems use user and leave this blank (v3 auth) (OS_USER_ID).
- user_id>
- User domain - optional (v3 auth) (OS_USER_DOMAIN_NAME)
- domain>
- Tenant name - optional for v1 auth, this or tenant_id required otherwise (OS_TENANT_NAME or OS_PROJECT_NAME)
- tenant>
- Tenant ID - optional for v1 auth, this or tenant required otherwise (OS_TENANT_ID)
- tenant_id>
- Tenant domain - optional (v3 auth) (OS_PROJECT_DOMAIN_NAME)
- tenant_domain>
- Region name - optional (OS_REGION_NAME)
- region>
- Storage URL - optional (OS_STORAGE_URL)
- storage_url>
- Auth Token from alternate authentication - optional (OS_AUTH_TOKEN)
- auth_token>
- AuthVersion - optional - set to (1,2,3) if your auth URL has no version (ST_AUTH_VERSION)
- auth_version>
- Endpoint type to choose from the service catalogue (OS_ENDPOINT_TYPE)
- Choose a number from below, or type in your own value
- 1 / Public (default, choose this if not sure)
- \ "public"
- 2 / Internal (use internal service net)
- \ "internal"
- 3 / Admin
- \ "admin"
- endpoint_type>
- Remote config
- --------------------
- [test]
- env_auth = true
- user =
- key =
- auth =
- user_id =
- domain =
- tenant =
- tenant_id =
- tenant_domain =
- region =
- storage_url =
- auth_token =
- auth_version =
- endpoint_type =
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- This remote is called remote and can now be used like this
- See all containers
- rclone lsd remote:
- Make a new container
- rclone mkdir remote:container
- List the contents of a container
- rclone ls remote:container
- Sync /home/local/directory to the remote container, deleting any excess
- files in the container.
- rclone sync /home/local/directory remote:container
- Configuration from an OpenStack credentials file
- An OpenStack credentials file typically looks something something like
- this (without the comments)
- export OS_AUTH_URL=https://a.provider.net/v2.0
- export OS_TENANT_ID=ffffffffffffffffffffffffffffffff
- export OS_TENANT_NAME="1234567890123456"
- export OS_USERNAME="123abc567xy"
- echo "Please enter your OpenStack Password: "
- read -sr OS_PASSWORD_INPUT
- export OS_PASSWORD=$OS_PASSWORD_INPUT
- export OS_REGION_NAME="SBG1"
- if [ -z "$OS_REGION_NAME" ]; then unset OS_REGION_NAME; fi
- The config file needs to look something like this where $OS_USERNAME
- represents the value of the OS_USERNAME variable - 123abc567xy in the
- example above.
- [remote]
- type = swift
- user = $OS_USERNAME
- key = $OS_PASSWORD
- auth = $OS_AUTH_URL
- tenant = $OS_TENANT_NAME
- Note that you may (or may not) need to set region too - try without
- first.
- Configuration from the environment
- If you prefer you can configure rclone to use swift using a standard set
- of OpenStack environment variables.
- When you run through the config, make sure you choose true for env_auth
- and leave everything else blank.
- rclone will then set any empty config parameters from the environment
- using standard OpenStack environment variables. There is a list of the
- variables in the docs for the swift library.
- Using an alternate authentication method
- If your OpenStack installation uses a non-standard authentication method
- that might not be yet supported by rclone or the underlying swift
- library, you can authenticate externally (e.g. calling manually the
- openstack commands to get a token). Then, you just need to pass the two
- configuration variables auth_token and storage_url. If they are both
- provided, the other variables are ignored. rclone will not try to
- authenticate but instead assume it is already authenticated and use
- these two variables to access the OpenStack installation.
- Using rclone without a config file
- You can use rclone with swift without a config file, if desired, like
- this:
- source openstack-credentials-file
- export RCLONE_CONFIG_MYREMOTE_TYPE=swift
- export RCLONE_CONFIG_MYREMOTE_ENV_AUTH=true
- rclone lsd myremote:
- –fast-list
- This remote supports --fast-list which allows you to use fewer
- transactions in exchange for more memory. See the rclone docs for more
- details.
- –update and –use-server-modtime
- As noted below, the modified time is stored on metadata on the object.
- It is used by default for all operations that require checking the time
- a file was last updated. It allows rclone to treat the remote more like
- a true filesystem, but it is inefficient because it requires an extra
- API call to retrieve the metadata.
- For many operations, the time the object was last uploaded to the remote
- is sufficient to determine if it is “dirty”. By using --update along
- with --use-server-modtime, you can avoid the extra API call and simply
- upload files whose local modtime is newer than the time it was last
- uploaded.
- Standard Options
- Here are the standard options specific to swift (Openstack Swift
- (Rackspace Cloud Files, Memset Memstore, OVH)).
- –swift-env-auth
- Get swift credentials from environment variables in standard OpenStack
- form.
- - Config: env_auth
- - Env Var: RCLONE_SWIFT_ENV_AUTH
- - Type: bool
- - Default: false
- - Examples:
- - “false”
- - Enter swift credentials in the next step
- - “true”
- - Get swift credentials from environment vars. Leave other
- fields blank if using this.
- –swift-user
- User name to log in (OS_USERNAME).
- - Config: user
- - Env Var: RCLONE_SWIFT_USER
- - Type: string
- - Default: ""
- –swift-key
- API key or password (OS_PASSWORD).
- - Config: key
- - Env Var: RCLONE_SWIFT_KEY
- - Type: string
- - Default: ""
- –swift-auth
- Authentication URL for server (OS_AUTH_URL).
- - Config: auth
- - Env Var: RCLONE_SWIFT_AUTH
- - Type: string
- - Default: ""
- - Examples:
- - “https://auth.api.rackspacecloud.com/v1.0”
- - Rackspace US
- - “https://lon.auth.api.rackspacecloud.com/v1.0”
- - Rackspace UK
- - “https://identity.api.rackspacecloud.com/v2.0”
- - Rackspace v2
- - “https://auth.storage.memset.com/v1.0”
- - Memset Memstore UK
- - “https://auth.storage.memset.com/v2.0”
- - Memset Memstore UK v2
- - “https://auth.cloud.ovh.net/v3”
- - OVH
- –swift-user-id
- User ID to log in - optional - most swift systems use user and leave
- this blank (v3 auth) (OS_USER_ID).
- - Config: user_id
- - Env Var: RCLONE_SWIFT_USER_ID
- - Type: string
- - Default: ""
- –swift-domain
- User domain - optional (v3 auth) (OS_USER_DOMAIN_NAME)
- - Config: domain
- - Env Var: RCLONE_SWIFT_DOMAIN
- - Type: string
- - Default: ""
- –swift-tenant
- Tenant name - optional for v1 auth, this or tenant_id required otherwise
- (OS_TENANT_NAME or OS_PROJECT_NAME)
- - Config: tenant
- - Env Var: RCLONE_SWIFT_TENANT
- - Type: string
- - Default: ""
- –swift-tenant-id
- Tenant ID - optional for v1 auth, this or tenant required otherwise
- (OS_TENANT_ID)
- - Config: tenant_id
- - Env Var: RCLONE_SWIFT_TENANT_ID
- - Type: string
- - Default: ""
- –swift-tenant-domain
- Tenant domain - optional (v3 auth) (OS_PROJECT_DOMAIN_NAME)
- - Config: tenant_domain
- - Env Var: RCLONE_SWIFT_TENANT_DOMAIN
- - Type: string
- - Default: ""
- –swift-region
- Region name - optional (OS_REGION_NAME)
- - Config: region
- - Env Var: RCLONE_SWIFT_REGION
- - Type: string
- - Default: ""
- –swift-storage-url
- Storage URL - optional (OS_STORAGE_URL)
- - Config: storage_url
- - Env Var: RCLONE_SWIFT_STORAGE_URL
- - Type: string
- - Default: ""
- –swift-auth-token
- Auth Token from alternate authentication - optional (OS_AUTH_TOKEN)
- - Config: auth_token
- - Env Var: RCLONE_SWIFT_AUTH_TOKEN
- - Type: string
- - Default: ""
- –swift-application-credential-id
- Application Credential ID (OS_APPLICATION_CREDENTIAL_ID)
- - Config: application_credential_id
- - Env Var: RCLONE_SWIFT_APPLICATION_CREDENTIAL_ID
- - Type: string
- - Default: ""
- –swift-application-credential-name
- Application Credential Name (OS_APPLICATION_CREDENTIAL_NAME)
- - Config: application_credential_name
- - Env Var: RCLONE_SWIFT_APPLICATION_CREDENTIAL_NAME
- - Type: string
- - Default: ""
- –swift-application-credential-secret
- Application Credential Secret (OS_APPLICATION_CREDENTIAL_SECRET)
- - Config: application_credential_secret
- - Env Var: RCLONE_SWIFT_APPLICATION_CREDENTIAL_SECRET
- - Type: string
- - Default: ""
- –swift-auth-version
- AuthVersion - optional - set to (1,2,3) if your auth URL has no version
- (ST_AUTH_VERSION)
- - Config: auth_version
- - Env Var: RCLONE_SWIFT_AUTH_VERSION
- - Type: int
- - Default: 0
- –swift-endpoint-type
- Endpoint type to choose from the service catalogue (OS_ENDPOINT_TYPE)
- - Config: endpoint_type
- - Env Var: RCLONE_SWIFT_ENDPOINT_TYPE
- - Type: string
- - Default: “public”
- - Examples:
- - “public”
- - Public (default, choose this if not sure)
- - “internal”
- - Internal (use internal service net)
- - “admin”
- - Admin
- –swift-storage-policy
- The storage policy to use when creating a new container
- This applies the specified storage policy when creating a new container.
- The policy cannot be changed afterwards. The allowed configuration
- values and their meaning depend on your Swift storage provider.
- - Config: storage_policy
- - Env Var: RCLONE_SWIFT_STORAGE_POLICY
- - Type: string
- - Default: ""
- - Examples:
- - ""
- - Default
- - “pcs”
- - OVH Public Cloud Storage
- - “pca”
- - OVH Public Cloud Archive
- Advanced Options
- Here are the advanced options specific to swift (Openstack Swift
- (Rackspace Cloud Files, Memset Memstore, OVH)).
- –swift-chunk-size
- Above this size files will be chunked into a _segments container.
- Above this size files will be chunked into a _segments container. The
- default for this is 5GB which is its maximum value.
- - Config: chunk_size
- - Env Var: RCLONE_SWIFT_CHUNK_SIZE
- - Type: SizeSuffix
- - Default: 5G
- –swift-no-chunk
- Don’t chunk files during streaming upload.
- When doing streaming uploads (eg using rcat or mount) setting this flag
- will cause the swift backend to not upload chunked files.
- This will limit the maximum upload size to 5GB. However non chunked
- files are easier to deal with and have an MD5SUM.
- Rclone will still chunk files bigger than chunk_size when doing normal
- copy operations.
- - Config: no_chunk
- - Env Var: RCLONE_SWIFT_NO_CHUNK
- - Type: bool
- - Default: false
- –swift-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_SWIFT_ENCODING
- - Type: MultiEncoder
- - Default: Slash,InvalidUtf8
- Modified time
- The modified time is stored as metadata on the object as
- X-Object-Meta-Mtime as floating point since the epoch accurate to 1 ns.
- This is a defacto standard (used in the official python-swiftclient
- amongst others) for storing the modification time for an object.
- Restricted filename characters
- Character Value Replacement
- ----------- ------- -------------
- NUL 0x00 ␀
- / 0x2F /
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Limitations
- The Swift API doesn’t return a correct MD5SUM for segmented files
- (Dynamic or Static Large Objects) so rclone won’t check or use the
- MD5SUM for these.
- Troubleshooting
- Rclone gives Failed to create file system for “remote:”: Bad Request
- Due to an oddity of the underlying swift library, it gives a “Bad
- Request” error rather than a more sensible error when the authentication
- fails for Swift.
- So this most likely means your username / password is wrong. You can
- investigate further with the --dump-bodies flag.
- This may also be caused by specifying the region when you shouldn’t have
- (eg OVH).
- Rclone gives Failed to create file system: Response didn’t have storage storage url and auth token
- This is most likely caused by forgetting to specify your tenant when
- setting up a swift remote.
- pCloud
- Paths are specified as remote:path
- Paths may be as deep as required, eg remote:directory/subdirectory.
- The initial setup for pCloud involves getting a token from pCloud which
- you need to do in your browser. rclone config walks you through it.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Pcloud
- \ "pcloud"
- [snip]
- Storage> pcloud
- Pcloud App Client Id - leave blank normally.
- client_id>
- Pcloud App Client Secret - leave blank normally.
- client_secret>
- Remote config
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine
- y) Yes
- n) No
- y/n> y
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- --------------------
- [remote]
- client_id =
- client_secret =
- token = {"access_token":"XXX","token_type":"bearer","expiry":"0001-01-01T00:00:00Z"}
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- See the remote setup docs for how to set it up on a machine with no
- Internet browser available.
- Note that rclone runs a webserver on your local machine to collect the
- token as returned from pCloud. This only runs from the moment it opens
- your browser to the moment you get back the verification code. This is
- on http://127.0.0.1:53682/ and this it may require you to unblock it
- temporarily if you are running a host firewall.
- Once configured you can then use rclone like this,
- List directories in top level of your pCloud
- rclone lsd remote:
- List all the files in your pCloud
- rclone ls remote:
- To copy a local directory to an pCloud directory called backup
- rclone copy /home/source remote:backup
- Modified time and hashes
- pCloud allows modification times to be set on objects accurate to 1
- second. These will be used to detect whether objects need syncing or
- not. In order to set a Modification time pCloud requires the object be
- re-uploaded.
- pCloud supports MD5 and SHA1 type hashes, so you can use the --checksum
- flag.
- Restricted filename characters
- In addition to the default restricted characters set the following
- characters are also replaced:
- Character Value Replacement
- ----------- ------- -------------
- \ 0x5C \
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Deleting files
- Deleted files will be moved to the trash. Your subscription level will
- determine how long items stay in the trash. rclone cleanup can be used
- to empty the trash.
- Standard Options
- Here are the standard options specific to pcloud (Pcloud).
- –pcloud-client-id
- Pcloud App Client Id Leave blank normally.
- - Config: client_id
- - Env Var: RCLONE_PCLOUD_CLIENT_ID
- - Type: string
- - Default: ""
- –pcloud-client-secret
- Pcloud App Client Secret Leave blank normally.
- - Config: client_secret
- - Env Var: RCLONE_PCLOUD_CLIENT_SECRET
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to pcloud (Pcloud).
- –pcloud-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_PCLOUD_ENCODING
- - Type: MultiEncoder
- - Default: Slash,BackSlash,Del,Ctl,InvalidUtf8,Dot
- premiumize.me
- Paths are specified as remote:path
- Paths may be as deep as required, eg remote:directory/subdirectory.
- The initial setup for premiumize.me involves getting a token from
- premiumize.me which you need to do in your browser. rclone config walks
- you through it.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- [snip]
- XX / premiumize.me
- \ "premiumizeme"
- [snip]
- Storage> premiumizeme
- ** See help for premiumizeme backend at: https://rclone.org/premiumizeme/ **
- Remote config
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine
- y) Yes
- n) No
- y/n> y
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- --------------------
- [remote]
- type = premiumizeme
- token = {"access_token":"XXX","token_type":"Bearer","refresh_token":"XXX","expiry":"2029-08-07T18:44:15.548915378+01:00"}
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d>
- See the remote setup docs for how to set it up on a machine with no
- Internet browser available.
- Note that rclone runs a webserver on your local machine to collect the
- token as returned from premiumize.me. This only runs from the moment it
- opens your browser to the moment you get back the verification code.
- This is on http://127.0.0.1:53682/ and this it may require you to
- unblock it temporarily if you are running a host firewall.
- Once configured you can then use rclone like this,
- List directories in top level of your premiumize.me
- rclone lsd remote:
- List all the files in your premiumize.me
- rclone ls remote:
- To copy a local directory to an premiumize.me directory called backup
- rclone copy /home/source remote:backup
- Modified time and hashes
- premiumize.me does not support modification times or hashes, therefore
- syncing will default to --size-only checking. Note that using --update
- will work.
- Restricted filename characters
- In addition to the default restricted characters set the following
- characters are also replaced:
- Character Value Replacement
- ----------- ------- -------------
- \ 0x5C \
- " 0x22 "
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Standard Options
- Here are the standard options specific to premiumizeme (premiumize.me).
- –premiumizeme-api-key
- API Key.
- This is not normally used - use oauth instead.
- - Config: api_key
- - Env Var: RCLONE_PREMIUMIZEME_API_KEY
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to premiumizeme (premiumize.me).
- –premiumizeme-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_PREMIUMIZEME_ENCODING
- - Type: MultiEncoder
- - Default: Slash,DoubleQuote,BackSlash,Del,Ctl,InvalidUtf8,Dot
- Limitations
- Note that premiumize.me is case insensitive so you can’t have a file
- called “Hello.doc” and one called “hello.doc”.
- premiumize.me file names can’t have the \ or " characters in. rclone
- maps these to and from an identical looking unicode equivalents \ and
- "
- premiumize.me only supports filenames up to 255 characters in length.
- put.io
- Paths are specified as remote:path
- put.io paths may be as deep as required, eg
- remote:directory/subdirectory.
- The initial setup for put.io involves getting a token from put.io which
- you need to do in your browser. rclone config walks you through it.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> putio
- Type of storage to configure.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- [snip]
- XX / Put.io
- \ "putio"
- [snip]
- Storage> putio
- ** See help for putio backend at: https://rclone.org/putio/ **
- Remote config
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine
- y) Yes
- n) No
- y/n> y
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- --------------------
- [putio]
- type = putio
- token = {"access_token":"XXXXXXXX","expiry":"0001-01-01T00:00:00Z"}
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Current remotes:
- Name Type
- ==== ====
- putio putio
- e) Edit existing remote
- n) New remote
- d) Delete remote
- r) Rename remote
- c) Copy remote
- s) Set configuration password
- q) Quit config
- e/n/d/r/c/s/q> q
- Note that rclone runs a webserver on your local machine to collect the
- token as returned from Google if you use auto config mode. This only
- runs from the moment it opens your browser to the moment you get back
- the verification code. This is on http://127.0.0.1:53682/ and this it
- may require you to unblock it temporarily if you are running a host
- firewall, or use manual mode.
- You can then use it like this,
- List directories in top level of your put.io
- rclone lsd remote:
- List all the files in your put.io
- rclone ls remote:
- To copy a local directory to a put.io directory called backup
- rclone copy /home/source remote:backup
- Restricted filename characters
- In addition to the default restricted characters set the following
- characters are also replaced:
- Character Value Replacement
- ----------- ------- -------------
- \ 0x5C \
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Advanced Options
- Here are the advanced options specific to putio (Put.io).
- –putio-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_PUTIO_ENCODING
- - Type: MultiEncoder
- - Default: Slash,BackSlash,Del,Ctl,InvalidUtf8,Dot
- SFTP
- SFTP is the Secure (or SSH) File Transfer Protocol.
- The SFTP backend can be used with a number of different providers:
- - C14
- - rsync.net
- SFTP runs over SSH v2 and is installed as standard with most modern SSH
- installations.
- Paths are specified as remote:path. If the path does not begin with a /
- it is relative to the home directory of the user. An empty path remote:
- refers to the user’s home directory.
- "Note that some SFTP servers will need the leading / - Synology is a
- good example of this. rsync.net, on the other hand, requires users to
- OMIT the leading /.
- Here is an example of making an SFTP configuration. First run
- rclone config
- This will guide you through an interactive setup process.
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / SSH/SFTP Connection
- \ "sftp"
- [snip]
- Storage> sftp
- SSH host to connect to
- Choose a number from below, or type in your own value
- 1 / Connect to example.com
- \ "example.com"
- host> example.com
- SSH username, leave blank for current username, ncw
- user> sftpuser
- SSH port, leave blank to use default (22)
- port>
- SSH password, leave blank to use ssh-agent.
- y) Yes type in my own password
- g) Generate random password
- n) No leave this optional password blank
- y/g/n> n
- Path to unencrypted PEM-encoded private key file, leave blank to use ssh-agent.
- key_file>
- Remote config
- --------------------
- [remote]
- host = example.com
- user = sftpuser
- port =
- pass =
- key_file =
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- This remote is called remote and can now be used like this:
- See all directories in the home directory
- rclone lsd remote:
- Make a new directory
- rclone mkdir remote:path/to/directory
- List the contents of a directory
- rclone ls remote:path/to/directory
- Sync /home/local/directory to the remote directory, deleting any excess
- files in the directory.
- rclone sync /home/local/directory remote:directory
- SSH Authentication
- The SFTP remote supports three authentication methods:
- - Password
- - Key file
- - ssh-agent
- Key files should be PEM-encoded private key files. For instance
- /home/$USER/.ssh/id_rsa. Only unencrypted OpenSSH or PEM encrypted files
- are supported.
- If you don’t specify pass or key_file then rclone will attempt to
- contact an ssh-agent.
- You can also specify key_use_agent to force the usage of an ssh-agent.
- In this case key_file can also be specified to force the usage of a
- specific key in the ssh-agent.
- Using an ssh-agent is the only way to load encrypted OpenSSH keys at the
- moment.
- If you set the --sftp-ask-password option, rclone will prompt for a
- password when needed and no password has been configured.
- ssh-agent on macOS
- Note that there seem to be various problems with using an ssh-agent on
- macOS due to recent changes in the OS. The most effective work-around
- seems to be to start an ssh-agent in each session, eg
- eval `ssh-agent -s` && ssh-add -A
- And then at the end of the session
- eval `ssh-agent -k`
- These commands can be used in scripts of course.
- Modified time
- Modified times are stored on the server to 1 second precision.
- Modified times are used in syncing and are fully supported.
- Some SFTP servers disable setting/modifying the file modification time
- after upload (for example, certain configurations of ProFTPd with
- mod_sftp). If you are using one of these servers, you can set the option
- set_modtime = false in your RClone backend configuration to disable this
- behaviour.
- Standard Options
- Here are the standard options specific to sftp (SSH/SFTP Connection).
- –sftp-host
- SSH host to connect to
- - Config: host
- - Env Var: RCLONE_SFTP_HOST
- - Type: string
- - Default: ""
- - Examples:
- - “example.com”
- - Connect to example.com
- –sftp-user
- SSH username, leave blank for current username, ncw
- - Config: user
- - Env Var: RCLONE_SFTP_USER
- - Type: string
- - Default: ""
- –sftp-port
- SSH port, leave blank to use default (22)
- - Config: port
- - Env Var: RCLONE_SFTP_PORT
- - Type: string
- - Default: ""
- –sftp-pass
- SSH password, leave blank to use ssh-agent.
- - Config: pass
- - Env Var: RCLONE_SFTP_PASS
- - Type: string
- - Default: ""
- –sftp-key-file
- Path to PEM-encoded private key file, leave blank or set key-use-agent
- to use ssh-agent.
- - Config: key_file
- - Env Var: RCLONE_SFTP_KEY_FILE
- - Type: string
- - Default: ""
- –sftp-key-file-pass
- The passphrase to decrypt the PEM-encoded private key file.
- Only PEM encrypted key files (old OpenSSH format) are supported.
- Encrypted keys in the new OpenSSH format can’t be used.
- - Config: key_file_pass
- - Env Var: RCLONE_SFTP_KEY_FILE_PASS
- - Type: string
- - Default: ""
- –sftp-key-use-agent
- When set forces the usage of the ssh-agent.
- When key-file is also set, the “.pub” file of the specified key-file is
- read and only the associated key is requested from the ssh-agent. This
- allows to avoid Too many authentication failures for *username* errors
- when the ssh-agent contains many keys.
- - Config: key_use_agent
- - Env Var: RCLONE_SFTP_KEY_USE_AGENT
- - Type: bool
- - Default: false
- –sftp-use-insecure-cipher
- Enable the use of insecure ciphers and key exchange methods.
- This enables the use of the the following insecure ciphers and key
- exchange methods:
- - aes128-cbc
- - aes192-cbc
- - aes256-cbc
- - 3des-cbc
- - diffie-hellman-group-exchange-sha256
- - diffie-hellman-group-exchange-sha1
- Those algorithms are insecure and may allow plaintext data to be
- recovered by an attacker.
- - Config: use_insecure_cipher
- - Env Var: RCLONE_SFTP_USE_INSECURE_CIPHER
- - Type: bool
- - Default: false
- - Examples:
- - “false”
- - Use default Cipher list.
- - “true”
- - Enables the use of the aes128-cbc cipher and
- diffie-hellman-group-exchange-sha256,
- diffie-hellman-group-exchange-sha1 key exchange.
- –sftp-disable-hashcheck
- Disable the execution of SSH commands to determine if remote file
- hashing is available. Leave blank or set to false to enable hashing
- (recommended), set to true to disable hashing.
- - Config: disable_hashcheck
- - Env Var: RCLONE_SFTP_DISABLE_HASHCHECK
- - Type: bool
- - Default: false
- Advanced Options
- Here are the advanced options specific to sftp (SSH/SFTP Connection).
- –sftp-ask-password
- Allow asking for SFTP password when needed.
- If this is set and no password is supplied then rclone will: - ask for a
- password - not contact the ssh agent
- - Config: ask_password
- - Env Var: RCLONE_SFTP_ASK_PASSWORD
- - Type: bool
- - Default: false
- –sftp-path-override
- Override path used by SSH connection.
- This allows checksum calculation when SFTP and SSH paths are different.
- This issue affects among others Synology NAS boxes.
- Shared folders can be found in directories representing volumes
- rclone sync /home/local/directory remote:/directory --ssh-path-override /volume2/directory
- Home directory can be found in a shared folder called “home”
- rclone sync /home/local/directory remote:/home/directory --ssh-path-override /volume1/homes/USER/directory
- - Config: path_override
- - Env Var: RCLONE_SFTP_PATH_OVERRIDE
- - Type: string
- - Default: ""
- –sftp-set-modtime
- Set the modified time on the remote if set.
- - Config: set_modtime
- - Env Var: RCLONE_SFTP_SET_MODTIME
- - Type: bool
- - Default: true
- –sftp-md5sum-command
- The command used to read md5 hashes. Leave blank for autodetect.
- - Config: md5sum_command
- - Env Var: RCLONE_SFTP_MD5SUM_COMMAND
- - Type: string
- - Default: ""
- –sftp-sha1sum-command
- The command used to read sha1 hashes. Leave blank for autodetect.
- - Config: sha1sum_command
- - Env Var: RCLONE_SFTP_SHA1SUM_COMMAND
- - Type: string
- - Default: ""
- –sftp-skip-links
- Set to skip any symlinks and any other non regular files.
- - Config: skip_links
- - Env Var: RCLONE_SFTP_SKIP_LINKS
- - Type: bool
- - Default: false
- Limitations
- SFTP supports checksums if the same login has shell access and md5sum or
- sha1sum as well as echo are in the remote’s PATH. This remote
- checksumming (file hashing) is recommended and enabled by default.
- Disabling the checksumming may be required if you are connecting to SFTP
- servers which are not under your control, and to which the execution of
- remote commands is prohibited. Set the configuration option
- disable_hashcheck to true to disable checksumming.
- SFTP also supports about if the same login has shell access and df are
- in the remote’s PATH. about will return the total space, free space, and
- used space on the remote for the disk of the specified path on the
- remote or, if not set, the disk of the root on the remote. about will
- fail if it does not have shell access or if df is not in the remote’s
- PATH.
- Note that some SFTP servers (eg Synology) the paths are different for
- SSH and SFTP so the hashes can’t be calculated properly. For them using
- disable_hashcheck is a good idea.
- The only ssh agent supported under Windows is Putty’s pageant.
- The Go SSH library disables the use of the aes128-cbc cipher by default,
- due to security concerns. This can be re-enabled on a per-connection
- basis by setting the use_insecure_cipher setting in the configuration
- file to true. Further details on the insecurity of this cipher can be
- found [in this paper] (http://www.isg.rhul.ac.uk/~kp/SandPfinal.pdf).
- SFTP isn’t supported under plan9 until this issue is fixed.
- Note that since SFTP isn’t HTTP based the following flags don’t work
- with it: --dump-headers, --dump-bodies, --dump-auth
- Note that --timeout isn’t supported (but --contimeout is).
- C14
- C14 is supported through the SFTP backend.
- See C14’s documentation
- rsync.net
- rsync.net is supported through the SFTP backend.
- See rsync.net’s documentation of rclone examples.
- SugarSync
- SugarSync is a cloud service that enables active synchronization of
- files across computers and other devices for file backup, access,
- syncing, and sharing.
- The initial setup for SugarSync involves getting a token from SugarSync
- which you can do with rclone. rclone config walks you through it.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Enter a string value. Press Enter for the default ("").
- Choose a number from below, or type in your own value
- [snip]
- XX / Sugarsync
- \ "sugarsync"
- [snip]
- Storage> sugarsync
- ** See help for sugarsync backend at: https://rclone.org/sugarsync/ **
- Sugarsync App ID.
- Leave blank to use rclone's.
- Enter a string value. Press Enter for the default ("").
- app_id>
- Sugarsync Access Key ID.
- Leave blank to use rclone's.
- Enter a string value. Press Enter for the default ("").
- access_key_id>
- Sugarsync Private Access Key
- Leave blank to use rclone's.
- Enter a string value. Press Enter for the default ("").
- private_access_key>
- Permanently delete files if true
- otherwise put them in the deleted files.
- Enter a boolean value (true or false). Press Enter for the default ("false").
- hard_delete>
- Edit advanced config? (y/n)
- y) Yes
- n) No (default)
- y/n> n
- Remote config
- Username (email address)> nick@craig-wood.com
- Your Sugarsync password is only required during setup and will not be stored.
- password:
- --------------------
- [remote]
- type = sugarsync
- refresh_token = https://api.sugarsync.com/app-authorization/XXXXXXXXXXXXXXXXXX
- --------------------
- y) Yes this is OK (default)
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Note that the config asks for your email and password but doesn’t store
- them, it only uses them to get the initial token.
- Once configured you can then use rclone like this,
- List directories (sync folders) in top level of your SugarSync
- rclone lsd remote:
- List all the files in your SugarSync folder “Test”
- rclone ls remote:Test
- To copy a local directory to an SugarSync folder called backup
- rclone copy /home/source remote:backup
- Paths are specified as remote:path
- Paths may be as deep as required, eg remote:directory/subdirectory.
- NB you can’t create files in the top level folder you have to create a
- folder, which rclone will create as a “Sync Folder” with SugarSync.
- Modified time and hashes
- SugarSync does not support modification times or hashes, therefore
- syncing will default to --size-only checking. Note that using --update
- will work as rclone can read the time files were uploaded.
- Restricted filename characters
- SugarSync replaces the default restricted characters set except for DEL.
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in XML
- strings.
- Deleting files
- Deleted files will be moved to the “Deleted items” folder by default.
- However you can supply the flag --sugarsync-hard-delete or set the
- config parameter hard_delete = true if you would like files to be
- deleted straight away.
- Standard Options
- Here are the standard options specific to sugarsync (Sugarsync).
- –sugarsync-app-id
- Sugarsync App ID.
- Leave blank to use rclone’s.
- - Config: app_id
- - Env Var: RCLONE_SUGARSYNC_APP_ID
- - Type: string
- - Default: ""
- –sugarsync-access-key-id
- Sugarsync Access Key ID.
- Leave blank to use rclone’s.
- - Config: access_key_id
- - Env Var: RCLONE_SUGARSYNC_ACCESS_KEY_ID
- - Type: string
- - Default: ""
- –sugarsync-private-access-key
- Sugarsync Private Access Key
- Leave blank to use rclone’s.
- - Config: private_access_key
- - Env Var: RCLONE_SUGARSYNC_PRIVATE_ACCESS_KEY
- - Type: string
- - Default: ""
- –sugarsync-hard-delete
- Permanently delete files if true otherwise put them in the deleted
- files.
- - Config: hard_delete
- - Env Var: RCLONE_SUGARSYNC_HARD_DELETE
- - Type: bool
- - Default: false
- Advanced Options
- Here are the advanced options specific to sugarsync (Sugarsync).
- –sugarsync-refresh-token
- Sugarsync refresh token
- Leave blank normally, will be auto configured by rclone.
- - Config: refresh_token
- - Env Var: RCLONE_SUGARSYNC_REFRESH_TOKEN
- - Type: string
- - Default: ""
- –sugarsync-authorization
- Sugarsync authorization
- Leave blank normally, will be auto configured by rclone.
- - Config: authorization
- - Env Var: RCLONE_SUGARSYNC_AUTHORIZATION
- - Type: string
- - Default: ""
- –sugarsync-authorization-expiry
- Sugarsync authorization expiry
- Leave blank normally, will be auto configured by rclone.
- - Config: authorization_expiry
- - Env Var: RCLONE_SUGARSYNC_AUTHORIZATION_EXPIRY
- - Type: string
- - Default: ""
- –sugarsync-user
- Sugarsync user
- Leave blank normally, will be auto configured by rclone.
- - Config: user
- - Env Var: RCLONE_SUGARSYNC_USER
- - Type: string
- - Default: ""
- –sugarsync-root-id
- Sugarsync root id
- Leave blank normally, will be auto configured by rclone.
- - Config: root_id
- - Env Var: RCLONE_SUGARSYNC_ROOT_ID
- - Type: string
- - Default: ""
- –sugarsync-deleted-id
- Sugarsync deleted folder id
- Leave blank normally, will be auto configured by rclone.
- - Config: deleted_id
- - Env Var: RCLONE_SUGARSYNC_DELETED_ID
- - Type: string
- - Default: ""
- –sugarsync-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_SUGARSYNC_ENCODING
- - Type: MultiEncoder
- - Default: Slash,Ctl,InvalidUtf8,Dot
- Union
- The union remote provides a unification similar to UnionFS using other
- remotes.
- Paths may be as deep as required or a local path, eg
- remote:directory/subdirectory or /directory/subdirectory.
- During the initial setup with rclone config you will specify the target
- remotes as a space separated list. The target remotes can either be a
- local paths or other remotes.
- The order of the remotes is important as it defines which remotes take
- precedence over others if there are files with the same name in the same
- logical path. The last remote is the topmost remote and replaces files
- with the same name from previous remotes.
- Only the last remote is used to write to and delete from, all other
- remotes are read-only.
- Subfolders can be used in target remote. Assume a union remote named
- backup with the remotes mydrive:private/backup mydrive2:/backup.
- Invoking rclone mkdir backup:desktop is exactly the same as invoking
- rclone mkdir mydrive2:/backup/desktop.
- There will be no special handling of paths containing .. segments.
- Invoking rclone mkdir backup:../desktop is exactly the same as invoking
- rclone mkdir mydrive2:/backup/../desktop.
- Here is an example of how to make a union called remote for local
- folders. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Union merges the contents of several remotes
- \ "union"
- [snip]
- Storage> union
- List of space separated remotes.
- Can be 'remotea:test/dir remoteb:', '"remotea:test/space dir" remoteb:', etc.
- The last remote is used to write to.
- Enter a string value. Press Enter for the default ("").
- remotes>
- Remote config
- --------------------
- [remote]
- type = union
- remotes = C:\dir1 C:\dir2 C:\dir3
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Current remotes:
- Name Type
- ==== ====
- remote union
- e) Edit existing remote
- n) New remote
- d) Delete remote
- r) Rename remote
- c) Copy remote
- s) Set configuration password
- q) Quit config
- e/n/d/r/c/s/q> q
- Once configured you can then use rclone like this,
- List directories in top level in C:\dir1, C:\dir2 and C:\dir3
- rclone lsd remote:
- List all the files in C:\dir1, C:\dir2 and C:\dir3
- rclone ls remote:
- Copy another local directory to the union directory called source, which
- will be placed into C:\dir3
- rclone copy C:\source remote:source
- Standard Options
- Here are the standard options specific to union (Union merges the
- contents of several remotes).
- –union-remotes
- List of space separated remotes. Can be ‘remotea:test/dir remoteb:’,
- ‘“remotea:test/space dir” remoteb:’, etc. The last remote is used to
- write to.
- - Config: remotes
- - Env Var: RCLONE_UNION_REMOTES
- - Type: string
- - Default: ""
- WebDAV
- Paths are specified as remote:path
- Paths may be as deep as required, eg remote:directory/subdirectory.
- To configure the WebDAV remote you will need to have a URL for it, and a
- username and password. If you know what kind of system you are
- connecting to then rclone can enable extra features.
- Here is an example of how to make a remote called remote. First run:
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- q) Quit config
- n/s/q> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Webdav
- \ "webdav"
- [snip]
- Storage> webdav
- URL of http host to connect to
- Choose a number from below, or type in your own value
- 1 / Connect to example.com
- \ "https://example.com"
- url> https://example.com/remote.php/webdav/
- Name of the Webdav site/service/software you are using
- Choose a number from below, or type in your own value
- 1 / Nextcloud
- \ "nextcloud"
- 2 / Owncloud
- \ "owncloud"
- 3 / Sharepoint
- \ "sharepoint"
- 4 / Other site/service or software
- \ "other"
- vendor> 1
- User name
- user> user
- Password.
- y) Yes type in my own password
- g) Generate random password
- n) No leave this optional password blank
- y/g/n> y
- Enter the password:
- password:
- Confirm the password:
- password:
- Bearer token instead of user/pass (eg a Macaroon)
- bearer_token>
- Remote config
- --------------------
- [remote]
- type = webdav
- url = https://example.com/remote.php/webdav/
- vendor = nextcloud
- user = user
- pass = *** ENCRYPTED ***
- bearer_token =
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- Once configured you can then use rclone like this,
- List directories in top level of your WebDAV
- rclone lsd remote:
- List all the files in your WebDAV
- rclone ls remote:
- To copy a local directory to an WebDAV directory called backup
- rclone copy /home/source remote:backup
- Modified time and hashes
- Plain WebDAV does not support modified times. However when used with
- Owncloud or Nextcloud rclone will support modified times.
- Likewise plain WebDAV does not support hashes, however when used with
- Owncloud or Nextcloud rclone will support SHA1 and MD5 hashes. Depending
- on the exact version of Owncloud or Nextcloud hashes may appear on all
- objects, or only on objects which had a hash uploaded with them.
- Standard Options
- Here are the standard options specific to webdav (Webdav).
- –webdav-url
- URL of http host to connect to
- - Config: url
- - Env Var: RCLONE_WEBDAV_URL
- - Type: string
- - Default: ""
- - Examples:
- - “https://example.com”
- - Connect to example.com
- –webdav-vendor
- Name of the Webdav site/service/software you are using
- - Config: vendor
- - Env Var: RCLONE_WEBDAV_VENDOR
- - Type: string
- - Default: ""
- - Examples:
- - “nextcloud”
- - Nextcloud
- - “owncloud”
- - Owncloud
- - “sharepoint”
- - Sharepoint
- - “other”
- - Other site/service or software
- –webdav-user
- User name
- - Config: user
- - Env Var: RCLONE_WEBDAV_USER
- - Type: string
- - Default: ""
- –webdav-pass
- Password.
- - Config: pass
- - Env Var: RCLONE_WEBDAV_PASS
- - Type: string
- - Default: ""
- –webdav-bearer-token
- Bearer token instead of user/pass (eg a Macaroon)
- - Config: bearer_token
- - Env Var: RCLONE_WEBDAV_BEARER_TOKEN
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to webdav (Webdav).
- –webdav-bearer-token-command
- Command to run to get a bearer token
- - Config: bearer_token_command
- - Env Var: RCLONE_WEBDAV_BEARER_TOKEN_COMMAND
- - Type: string
- - Default: ""
- Provider notes
- See below for notes on specific providers.
- Owncloud
- Click on the settings cog in the bottom right of the page and this will
- show the WebDAV URL that rclone needs in the config step. It will look
- something like https://example.com/remote.php/webdav/.
- Owncloud supports modified times using the X-OC-Mtime header.
- Nextcloud
- This is configured in an identical way to Owncloud. Note that Nextcloud
- does not support streaming of files (rcat) whereas Owncloud does. This
- may be fixed in the future.
- Sharepoint
- Rclone can be used with Sharepoint provided by OneDrive for Business or
- Office365 Education Accounts. This feature is only needed for a few of
- these Accounts, mostly Office365 Education ones. These accounts are
- sometimes not verified by the domain owner github#1975
- This means that these accounts can’t be added using the official API
- (other Accounts should work with the “onedrive” option). However, it is
- possible to access them using webdav.
- To use a sharepoint remote with rclone, add it like this: First, you
- need to get your remote’s URL:
- - Go here to open your OneDrive or to sign in
- - Now take a look at your address bar, the URL should look like this:
- https://[YOUR-DOMAIN]-my.sharepoint.com/personal/[YOUR-EMAIL]/_layouts/15/onedrive.aspx
- You’ll only need this URL upto the email address. After that, you’ll
- most likely want to add “/Documents”. That subdirectory contains the
- actual data stored on your OneDrive.
- Add the remote to rclone like this: Configure the url as
- https://[YOUR-DOMAIN]-my.sharepoint.com/personal/[YOUR-EMAIL]/Documents
- and use your normal account email and password for user and pass. If you
- have 2FA enabled, you have to generate an app password. Set the vendor
- to sharepoint.
- Your config file should look like this:
- [sharepoint]
- type = webdav
- url = https://[YOUR-DOMAIN]-my.sharepoint.com/personal/[YOUR-EMAIL]/Documents
- vendor = other
- user = YourEmailAddress
- pass = encryptedpassword
- Required Flags for SharePoint
- As SharePoint does some special things with uploaded documents, you
- won’t be able to use the documents size or the documents hash to compare
- if a file has been changed since the upload / which file is newer.
- For Rclone calls copying files (especially Office files such as .docx,
- .xlsx, etc.) from/to SharePoint (like copy, sync, etc.), you should
- append these flags to ensure Rclone uses the “Last Modified” datetime
- property to compare your documents:
- --ignore-size --ignore-checksum --update
- dCache
- dCache is a storage system that supports many protocols and
- authentication/authorisation schemes. For WebDAV clients, it allows
- users to authenticate with username and password (BASIC), X.509,
- Kerberos, and various bearer tokens, including Macaroons and
- OpenID-Connect access tokens.
- Configure as normal using the other type. Don’t enter a username or
- password, instead enter your Macaroon as the bearer_token.
- The config will end up looking something like this.
- [dcache]
- type = webdav
- url = https://dcache...
- vendor = other
- user =
- pass =
- bearer_token = your-macaroon
- There is a script that obtains a Macaroon from a dCache WebDAV endpoint,
- and creates an rclone config file.
- Macaroons may also be obtained from the dCacheView
- web-browser/JavaScript client that comes with dCache.
- OpenID-Connect
- dCache also supports authenticating with OpenID-Connect access tokens.
- OpenID-Connect is a protocol (based on OAuth 2.0) that allows services
- to identify users who have authenticated with some central service.
- Support for OpenID-Connect in rclone is currently achieved using another
- software package called oidc-agent. This is a command-line tool that
- facilitates obtaining an access token. Once installed and configured, an
- access token is obtained by running the oidc-token command. The
- following example shows a (shortened) access token obtained from the
- _XDC_ OIDC Provider.
- paul@celebrimbor:~$ oidc-token XDC
- eyJraWQ[...]QFXDt0
- paul@celebrimbor:~$
- NOTE Before the oidc-token command will work, the refresh token must be
- loaded into the oidc agent. This is done with the oidc-add command
- (e.g., oidc-add XDC). This is typically done once per login session.
- Full details on this and how to register oidc-agent with your OIDC
- Provider are provided in the oidc-agent documentation.
- The rclone bearer_token_command configuration option is used to fetch
- the access token from oidc-agent.
- Configure as a normal WebDAV endpoint, using the ‘other’ vendor, leaving
- the username and password empty. When prompted, choose to edit the
- advanced config and enter the command to get a bearer token (e.g.,
- oidc-agent XDC).
- The following example config shows a WebDAV endpoint that uses
- oidc-agent to supply an access token from the _XDC_ OIDC Provider.
- [dcache]
- type = webdav
- url = https://dcache.example.org/
- vendor = other
- bearer_token_command = oidc-token XDC
- Yandex Disk
- Yandex Disk is a cloud storage solution created by Yandex.
- Here is an example of making a yandex configuration. First run
- rclone config
- This will guide you through an interactive setup process:
- No remotes found - make a new one
- n) New remote
- s) Set configuration password
- n/s> n
- name> remote
- Type of storage to configure.
- Choose a number from below, or type in your own value
- [snip]
- XX / Yandex Disk
- \ "yandex"
- [snip]
- Storage> yandex
- Yandex Client Id - leave blank normally.
- client_id>
- Yandex Client Secret - leave blank normally.
- client_secret>
- Remote config
- Use auto config?
- * Say Y if not sure
- * Say N if you are working on a remote or headless machine
- y) Yes
- n) No
- y/n> y
- If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
- Log in and authorize rclone for access
- Waiting for code...
- Got code
- --------------------
- [remote]
- client_id =
- client_secret =
- token = {"access_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","token_type":"bearer","expiry":"2016-12-29T12:27:11.362788025Z"}
- --------------------
- y) Yes this is OK
- e) Edit this remote
- d) Delete this remote
- y/e/d> y
- See the remote setup docs for how to set it up on a machine with no
- Internet browser available.
- Note that rclone runs a webserver on your local machine to collect the
- token as returned from Yandex Disk. This only runs from the moment it
- opens your browser to the moment you get back the verification code.
- This is on http://127.0.0.1:53682/ and this it may require you to
- unblock it temporarily if you are running a host firewall.
- Once configured you can then use rclone like this,
- See top level directories
- rclone lsd remote:
- Make a new directory
- rclone mkdir remote:directory
- List the contents of a directory
- rclone ls remote:directory
- Sync /home/local/directory to the remote path, deleting any excess files
- in the path.
- rclone sync /home/local/directory remote:directory
- Yandex paths may be as deep as required, eg
- remote:directory/subdirectory.
- Modified time
- Modified times are supported and are stored accurate to 1 ns in custom
- metadata called rclone_modified in RFC3339 with nanoseconds format.
- MD5 checksums
- MD5 checksums are natively supported by Yandex Disk.
- Emptying Trash
- If you wish to empty your trash you can use the rclone cleanup remote:
- command which will permanently delete all your trashed files. This
- command does not take any path arguments.
- Quota information
- To view your current quota you can use the rclone about remote: command
- which will display your usage limit (quota) and the current usage.
- Restricted filename characters
- The default restricted characters set are replaced.
- Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON
- strings.
- Limitations
- When uploading very large files (bigger than about 5GB) you will need to
- increase the --timeout parameter. This is because Yandex pauses (perhaps
- to calculate the MD5SUM for the entire file) before returning
- confirmation that the file has been uploaded. The default handling of
- timeouts in rclone is to assume a 5 minute pause is an error and close
- the connection - you’ll see net/http: timeout awaiting response headers
- errors in the logs if this is happening. Setting the timeout to twice
- the max size of file in GB should be enough, so if you want to upload a
- 30GB file set a timeout of 2 * 30 = 60m, that is --timeout 60m.
- Standard Options
- Here are the standard options specific to yandex (Yandex Disk).
- –yandex-client-id
- Yandex Client Id Leave blank normally.
- - Config: client_id
- - Env Var: RCLONE_YANDEX_CLIENT_ID
- - Type: string
- - Default: ""
- –yandex-client-secret
- Yandex Client Secret Leave blank normally.
- - Config: client_secret
- - Env Var: RCLONE_YANDEX_CLIENT_SECRET
- - Type: string
- - Default: ""
- Advanced Options
- Here are the advanced options specific to yandex (Yandex Disk).
- –yandex-unlink
- Remove existing public link to file/folder with link command rather than
- creating. Default is false, meaning link command will create or retrieve
- public link.
- - Config: unlink
- - Env Var: RCLONE_YANDEX_UNLINK
- - Type: bool
- - Default: false
- –yandex-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_YANDEX_ENCODING
- - Type: MultiEncoder
- - Default: Slash,Del,Ctl,InvalidUtf8,Dot
- Local Filesystem
- Local paths are specified as normal filesystem paths, eg
- /path/to/wherever, so
- rclone sync /home/source /tmp/destination
- Will sync /home/source to /tmp/destination
- These can be configured into the config file for consistencies sake, but
- it is probably easier not to.
- Modified time
- Rclone reads and writes the modified time using an accuracy determined
- by the OS. Typically this is 1ns on Linux, 10 ns on Windows and 1 Second
- on OS X.
- Filenames
- Filenames should be encoded in UTF-8 on disk. This is the normal case
- for Windows and OS X.
- There is a bit more uncertainty in the Linux world, but new
- distributions will have UTF-8 encoded files names. If you are using an
- old Linux filesystem with non UTF-8 file names (eg latin1) then you can
- use the convmv tool to convert the filesystem to UTF-8. This tool is
- available in most distributions’ package managers.
- If an invalid (non-UTF8) filename is read, the invalid characters will
- be replaced with a quoted representation of the invalid bytes. The name
- gro\xdf will be transferred as gro‛DF. rclone will emit a debug message
- in this case (use -v to see), eg
- Local file system at .: Replacing invalid UTF-8 characters in "gro\xdf"
- Restricted characters
- On non Windows platforms the following characters are replaced when
- handling file names.
- Character Value Replacement
- ----------- ------- -------------
- NUL 0x00 ␀
- / 0x2F /
- When running on Windows the following characters are replaced. This list
- is based on the Windows file naming conventions.
- Character Value Replacement
- ----------- ------- -------------
- NUL 0x00 ␀
- SOH 0x01 ␁
- STX 0x02 ␂
- ETX 0x03 ␃
- EOT 0x04 ␄
- ENQ 0x05 ␅
- ACK 0x06 ␆
- BEL 0x07 ␇
- BS 0x08 ␈
- HT 0x09 ␉
- LF 0x0A ␊
- VT 0x0B ␋
- FF 0x0C ␌
- CR 0x0D ␍
- SO 0x0E ␎
- SI 0x0F ␏
- DLE 0x10 ␐
- DC1 0x11 ␑
- DC2 0x12 ␒
- DC3 0x13 ␓
- DC4 0x14 ␔
- NAK 0x15 ␕
- SYN 0x16 ␖
- ETB 0x17 ␗
- CAN 0x18 ␘
- EM 0x19 ␙
- SUB 0x1A ␚
- ESC 0x1B ␛
- FS 0x1C ␜
- GS 0x1D ␝
- RS 0x1E ␞
- US 0x1F ␟
- / 0x2F /
- " 0x22 "
- * 0x2A *
- : 0x3A :
- < 0x3C <
- > 0x3E >
- ? 0x3F ?
- \ 0x5C \
- | 0x7C |
- File names on Windows can also not end with the following characters.
- These only get replaced if they are last character in the name:
- Character Value Replacement
- ----------- ------- -------------
- SP 0x20 ␠
- . 0x2E .
- Invalid UTF-8 bytes will also be replaced, as they can’t be converted to
- UTF-16.
- Long paths on Windows
- Rclone handles long paths automatically, by converting all paths to long
- UNC paths which allows paths up to 32,767 characters.
- This is why you will see that your paths, for instance c:\files is
- converted to the UNC path \\?\c:\files in the output, and \\server\share
- is converted to \\?\UNC\server\share.
- However, in rare cases this may cause problems with buggy file system
- drivers like EncFS. To disable UNC conversion globally, add this to your
- .rclone.conf file:
- [local]
- nounc = true
- If you want to selectively disable UNC, you can add it to a separate
- entry like this:
- [nounc]
- type = local
- nounc = true
- And use rclone like this:
- rclone copy c:\src nounc:z:\dst
- This will use UNC paths on c:\src but not on z:\dst. Of course this will
- cause problems if the absolute path length of a file exceeds 258
- characters on z, so only use this option if you have to.
- Symlinks / Junction points
- Normally rclone will ignore symlinks or junction points (which behave
- like symlinks under Windows).
- If you supply --copy-links or -L then rclone will follow the symlink and
- copy the pointed to file or directory. Note that this flag is
- incompatible with -links / -l.
- This flag applies to all commands.
- For example, supposing you have a directory structure like this
- $ tree /tmp/a
- /tmp/a
- ├── b -> ../b
- ├── expected -> ../expected
- ├── one
- └── two
- └── three
- Then you can see the difference with and without the flag like this
- $ rclone ls /tmp/a
- 6 one
- 6 two/three
- and
- $ rclone -L ls /tmp/a
- 4174 expected
- 6 one
- 6 two/three
- 6 b/two
- 6 b/one
- –links, -l
- Normally rclone will ignore symlinks or junction points (which behave
- like symlinks under Windows).
- If you supply this flag then rclone will copy symbolic links from the
- local storage, and store them as text files, with a ‘.rclonelink’ suffix
- in the remote storage.
- The text file will contain the target of the symbolic link (see
- example).
- This flag applies to all commands.
- For example, supposing you have a directory structure like this
- $ tree /tmp/a
- /tmp/a
- ├── file1 -> ./file4
- └── file2 -> /home/user/file3
- Copying the entire directory with ‘-l’
- $ rclone copyto -l /tmp/a/file1 remote:/tmp/a/
- The remote files are created with a ‘.rclonelink’ suffix
- $ rclone ls remote:/tmp/a
- 5 file1.rclonelink
- 14 file2.rclonelink
- The remote files will contain the target of the symbolic links
- $ rclone cat remote:/tmp/a/file1.rclonelink
- ./file4
- $ rclone cat remote:/tmp/a/file2.rclonelink
- /home/user/file3
- Copying them back with ‘-l’
- $ rclone copyto -l remote:/tmp/a/ /tmp/b/
- $ tree /tmp/b
- /tmp/b
- ├── file1 -> ./file4
- └── file2 -> /home/user/file3
- However, if copied back without ‘-l’
- $ rclone copyto remote:/tmp/a/ /tmp/b/
- $ tree /tmp/b
- /tmp/b
- ├── file1.rclonelink
- └── file2.rclonelink
- Note that this flag is incompatible with -copy-links / -L.
- Restricting filesystems with –one-file-system
- Normally rclone will recurse through filesystems as mounted.
- However if you set --one-file-system or -x this tells rclone to stay in
- the filesystem specified by the root and not to recurse into different
- file systems.
- For example if you have a directory hierarchy like this
- root
- ├── disk1 - disk1 mounted on the root
- │ └── file3 - stored on disk1
- ├── disk2 - disk2 mounted on the root
- │ └── file4 - stored on disk12
- ├── file1 - stored on the root disk
- └── file2 - stored on the root disk
- Using rclone --one-file-system copy root remote: will only copy file1
- and file2. Eg
- $ rclone -q --one-file-system ls root
- 0 file1
- 0 file2
- $ rclone -q ls root
- 0 disk1/file3
- 0 disk2/file4
- 0 file1
- 0 file2
- NB Rclone (like most unix tools such as du, rsync and tar) treats a bind
- mount to the same device as being on the same filesystem.
- NB This flag is only available on Unix based systems. On systems where
- it isn’t supported (eg Windows) it will be ignored.
- Standard Options
- Here are the standard options specific to local (Local Disk).
- –local-nounc
- Disable UNC (long path names) conversion on Windows
- - Config: nounc
- - Env Var: RCLONE_LOCAL_NOUNC
- - Type: string
- - Default: ""
- - Examples:
- - “true”
- - Disables long file names
- Advanced Options
- Here are the advanced options specific to local (Local Disk).
- –copy-links / -L
- Follow symlinks and copy the pointed to item.
- - Config: copy_links
- - Env Var: RCLONE_LOCAL_COPY_LINKS
- - Type: bool
- - Default: false
- –links / -l
- Translate symlinks to/from regular files with a ‘.rclonelink’ extension
- - Config: links
- - Env Var: RCLONE_LOCAL_LINKS
- - Type: bool
- - Default: false
- –skip-links
- Don’t warn about skipped symlinks. This flag disables warning messages
- on skipped symlinks or junction points, as you explicitly acknowledge
- that they should be skipped.
- - Config: skip_links
- - Env Var: RCLONE_LOCAL_SKIP_LINKS
- - Type: bool
- - Default: false
- –local-no-unicode-normalization
- Don’t apply unicode normalization to paths and filenames (Deprecated)
- This flag is deprecated now. Rclone no longer normalizes unicode file
- names, but it compares them with unicode normalization in the sync
- routine instead.
- - Config: no_unicode_normalization
- - Env Var: RCLONE_LOCAL_NO_UNICODE_NORMALIZATION
- - Type: bool
- - Default: false
- –local-no-check-updated
- Don’t check to see if the files change during upload
- Normally rclone checks the size and modification time of files as they
- are being uploaded and aborts with a message which starts “can’t copy -
- source file is being updated” if the file changes during upload.
- However on some file systems this modification time check may fail (eg
- Glusterfs #2206) so this check can be disabled with this flag.
- - Config: no_check_updated
- - Env Var: RCLONE_LOCAL_NO_CHECK_UPDATED
- - Type: bool
- - Default: false
- –one-file-system / -x
- Don’t cross filesystem boundaries (unix/macOS only).
- - Config: one_file_system
- - Env Var: RCLONE_LOCAL_ONE_FILE_SYSTEM
- - Type: bool
- - Default: false
- –local-case-sensitive
- Force the filesystem to report itself as case sensitive.
- Normally the local backend declares itself as case insensitive on
- Windows/macOS and case sensitive for everything else. Use this flag to
- override the default choice.
- - Config: case_sensitive
- - Env Var: RCLONE_LOCAL_CASE_SENSITIVE
- - Type: bool
- - Default: false
- –local-case-insensitive
- Force the filesystem to report itself as case insensitive
- Normally the local backend declares itself as case insensitive on
- Windows/macOS and case sensitive for everything else. Use this flag to
- override the default choice.
- - Config: case_insensitive
- - Env Var: RCLONE_LOCAL_CASE_INSENSITIVE
- - Type: bool
- - Default: false
- –local-encoding
- This sets the encoding for the backend.
- See: the encoding section in the overview for more info.
- - Config: encoding
- - Env Var: RCLONE_LOCAL_ENCODING
- - Type: MultiEncoder
- - Default: Slash,Dot
- CHANGELOG
- v1.51.0 - 2020-02-01
- - New backends
- - Memory (Nick Craig-Wood)
- - Sugarsync (Nick Craig-Wood)
- - New Features
- - Adjust all backends to have --backend-encoding parameter (Nick
- Craig-Wood)
- - this enables the encoding for special characters to be
- adjusted or disabled
- - Add --max-duration flag to control the maximum duration of a
- transfer session (boosh)
- - Add --expect-continue-timeout flag, default 1s (Nick Craig-Wood)
- - Add --no-check-dest flag for copying without testing the
- destination (Nick Craig-Wood)
- - Implement --order-by flag to order transfers (Nick Craig-Wood)
- - accounting
- - Don’t show entries in both transferring and checking (Nick
- Craig-Wood)
- - Add option to delete stats (Aleksandar Jankovic)
- - build
- - Compress the test builds with gzip (Nick Craig-Wood)
- - Implement a framework for starting test servers during tests
- (Nick Craig-Wood)
- - cmd: Always print elapsed time to tenth place seconds in
- progress (Gary Kim)
- - config
- - Add --password-command to allow dynamic config password
- (Damon Permezel)
- - Give config questions default values (Nick Craig-Wood)
- - Check a remote exists when creating a new one (Nick
- Craig-Wood)
- - copyurl: Add --stdout flag to write to stdout (Nick Craig-Wood)
- - dedupe: Implement keep smallest too (Nick Craig-Wood)
- - hashsum: Add flag --base64 flag (landall)
- - lsf: Speed up on s3/swift/etc by not reading mimetype by default
- (Nick Craig-Wood)
- - lsjson: Add --no-mimetype flag (Nick Craig-Wood)
- - rc: Add methods to turn on blocking and mutex profiling (Nick
- Craig-Wood)
- - rcd
- - Adding group parameter to stats (Chaitanya)
- - Move webgui apart; option to disable browser (Xiaoxing Ye)
- - serve sftp: Add support for public key with auth proxy (Paul
- Tinsley)
- - stats: Show deletes in stats and hide zero stats (anuar45)
- - Bug Fixes
- - accounting
- - Fix error counter counting multiple times (Ankur Gupta)
- - Fix error count shown as checks (Cnly)
- - Clear finished transfer in stats-reset (Maciej Zimnoch)
- - Added StatsInfo locking in statsGroups sum function (Michał
- Matczuk)
- - asyncreader: Fix EOF error (buengese)
- - check: Fix --one-way recursing more directories than it needs to
- (Nick Craig-Wood)
- - chunkedreader: Disable hash calculation for first segment (Nick
- Craig-Wood)
- - config
- - Do not open browser on headless on drive/gcs/google photos
- (Xiaoxing Ye)
- - SetValueAndSave ignore error if config section does not
- exist yet (buengese)
- - cmd: Fix completion with an encrypted config (Danil Semelenov)
- - dbhashsum: Stop it returning UNSUPPORTED on dropbox (Nick
- Craig-Wood)
- - dedupe: Add missing modes to help string (Nick Craig-Wood)
- - operations
- - Fix dedupe continuing on errors like
- insufficientFilePermisson (SezalAgrawal)
- - Clear accounting before low level retry (Maciej Zimnoch)
- - Write debug message when hashes could not be checked (Ole
- Schütt)
- - Move interface assertion to tests to remove pflag dependency
- (Nick Craig-Wood)
- - Make NewOverrideObjectInfo public and factor uses (Nick
- Craig-Wood)
- - proxy: Replace use of bcrypt with sha256 (Nick Craig-Wood)
- - vendor
- - Update bazil.org/fuse to fix FreeBSD 12.1 (Nick Craig-Wood)
- - Update github.com/t3rm1n4l/go-mega to fix mega “illegal
- base64 data at input byte 22” (Nick Craig-Wood)
- - Update termbox-go to fix ncdu command on FreeBSD (Kuang-che
- Wu)
- - Update t3rm1n4l/go-mega - fixes mega: couldn’t login:
- crypto/aes: invalid key size 0 (Nick Craig-Wood)
- - Mount
- - Enable async reads for a 20% speedup (Nick Craig-Wood)
- - Replace use of WriteAt with Write for cache mode >= writes and
- O_APPEND (Brett Dutro)
- - Make sure we call unmount when exiting (Nick Craig-Wood)
- - Don’t build on go1.10 as bazil/fuse no longer supports it (Nick
- Craig-Wood)
- - When setting dates discard out of range dates (Nick Craig-Wood)
- - VFS
- - Add a newly created file straight into the directory (Nick
- Craig-Wood)
- - Only calculate one hash for reads for a speedup (Nick
- Craig-Wood)
- - Make ReadAt for non cached files work better with non-sequential
- reads (Nick Craig-Wood)
- - Fix edge cases when reading ModTime from file (Nick Craig-Wood)
- - Make sure existing files opened for write show correct size
- (Nick Craig-Wood)
- - Don’t cache the path in RW file objects to fix renaming (Nick
- Craig-Wood)
- - Fix rename of open files when using the VFS cache (Nick
- Craig-Wood)
- - When renaming files in the cache, rename the cache item in
- memory too (Nick Craig-Wood)
- - Fix open file renaming on drive when using
- --vfs-cache-mode writes (Nick Craig-Wood)
- - Fix incorrect modtime for mv into mount with
- --vfs-cache-modes writes (Nick Craig-Wood)
- - On rename, rename in cache too if the file exists (Anagh Kumar
- Baranwal)
- - Local
- - Make source file being updated errors be NoLowLevelRetry errors
- (Nick Craig-Wood)
- - Fix update of hidden files on Windows (Nick Craig-Wood)
- - Cache
- - Follow move of upstream library github.com/coreos/bbolt
- github.com/etcd-io/bbolt (Nick Craig-Wood)
- - Fix fatal error: concurrent map writes (Nick Craig-Wood)
- - Crypt
- - Reorder the filename encryption options (Thomas Eales)
- - Correctly handle trailing dot (buengese)
- - Chunker
- - Reduce length of temporary suffix (Ivan Andreev)
- - Drive
- - Add --drive-stop-on-upload-limit flag to stop syncs when upload
- limit reached (Nick Craig-Wood)
- - Add --drive-use-shared-date to use date file was shared instead
- of modified date (Garry McNulty)
- - Make sure invalid auth for teamdrives always reports an error
- (Nick Craig-Wood)
- - Fix --fast-list when using appDataFolder (Nick Craig-Wood)
- - Use multipart resumable uploads for streaming and uploads in
- mount (Nick Craig-Wood)
- - Log an ERROR if an incomplete search is returned (Nick
- Craig-Wood)
- - Hide dangerous config from the configurator (Nick Craig-Wood)
- - Dropbox
- - Treat insufficient_space errors as non retriable errors (Nick
- Craig-Wood)
- - Jottacloud
- - Use new auth method used by official client (buengese)
- - Add URL to generate Login Token to config wizard (Nick
- Craig-Wood)
- - Add support whitelabel versions (buengese)
- - Koofr
- - Use rclone HTTP client. (jaKa)
- - Onedrive
- - Add Sites.Read.All permission (Benjamin Richter)
- - Add support “Retry-After” header (Motonori IWAMURO)
- - Opendrive
- - Implement --opendrive-chunk-size (Nick Craig-Wood)
- - S3
- - Re-implement multipart upload to fix memory issues (Nick
- Craig-Wood)
- - Add --s3-copy-cutoff for size to switch to multipart copy (Nick
- Craig-Wood)
- - Add new region Asia Patific (Hong Kong) (Outvi V)
- - Reduce memory usage streaming files by reducing max stream
- upload size (Nick Craig-Wood)
- - Add --s3-list-chunk option for bucket listing (Thomas
- Kriechbaumer)
- - Force path style bucket access to off for AWS deprecation (Nick
- Craig-Wood)
- - Use AWS web identity role provider if available (Tennix)
- - Fix ExpiryWindow value (Aleksandar Jankovic)
- - Fix DisableChecksum condition (Aleksandar Janković)
- - Fix URL decoding of NextMarker (Nick Craig-Wood)
- - SFTP
- - Add --sftp-skip-links to skip symlinks and non regular files
- (Nick Craig-Wood)
- - Retry Creation of Connection (Sebastian Brandt)
- - Fix “failed to parse private key file: ssh: not an encrypted
- key” error (Nick Craig-Wood)
- - Open files for update write only to fix AWS SFTP interop (Nick
- Craig-Wood)
- - Swift
- - Reserve segments of dynamic large object when delete objects in
- container what was enabled versioning. (Nguyễn Hữu Luân)
- - Fix parsing of X-Object-Manifest (Nick Craig-Wood)
- - Update OVH API endpoint (unbelauscht)
- - WebDAV
- - Make nextcloud only upload SHA1 checksums (Nick Craig-Wood)
- - Fix case of “Bearer” in Authorization: header to agree with RFC
- (Nick Craig-Wood)
- - Add Referer header to fix problems with WAFs (Nick Craig-Wood)
- v1.50.2 - 2019-11-19
- - Bug Fixes
- - accounting: Fix memory leak on retries operations (Nick
- Craig-Wood)
- - Drive
- - Fix listing of the root directory with drive.files scope (Nick
- Craig-Wood)
- - Fix –drive-root-folder-id with team/shared drives (Nick
- Craig-Wood)
- v1.50.1 - 2019-11-02
- - Bug Fixes
- - hash: Fix accidentally changed hash names for DropboxHash and
- CRC-32 (Nick Craig-Wood)
- - fshttp: Fix error reporting on tpslimit token bucket errors
- (Nick Craig-Wood)
- - fshttp: Don’t print token bucket errors on context cancelled
- (Nick Craig-Wood)
- - Local
- - Fix listings of . on Windows (Nick Craig-Wood)
- - Onedrive
- - Fix DirMove/Move after Onedrive change (Xiaoxing Ye)
- v1.50.0 - 2019-10-26
- - New backends
- - Citrix Sharefile (Nick Craig-Wood)
- - Chunker - an overlay backend to split files into smaller parts
- (Ivan Andreev)
- - Mail.ru Cloud (Ivan Andreev)
- - New Features
- - encodings (Fabian Möller & Nick Craig-Wood)
- - All backends now use file name encoding to ensure any file
- name can be written to any backend.
- - See the restricted file name docs for more info and the
- local backend docs.
- - Some file names may look different in rclone if you are
- using any control characters in names or unicode FULLWIDTH
- symbols.
- - build
- - Update to use go1.13 for the build (Nick Craig-Wood)
- - Drop support for go1.9 (Nick Craig-Wood)
- - Build rclone with GitHub actions (Nick Craig-Wood)
- - Convert python scripts to python3 (Nick Craig-Wood)
- - Swap Azure/go-ansiterm for mattn/go-colorable (Nick
- Craig-Wood)
- - Dockerfile fixes (Matei David)
- - Add plugin support for backends and commands (Richard Patel)
- - config
- - Use alternating Red/Green in config to make more obvious
- (Nick Craig-Wood)
- - contrib
- - Add sample DLNA server Docker Compose manifest. (pataquets)
- - Add sample WebDAV server Docker Compose manifest.
- (pataquets)
- - copyurl
- - Add --auto-filename flag for using file name from URL in
- destination path (Denis)
- - serve dlna:
- - Many compatability improvements (Dan Walters)
- - Support for external srt subtitles (Dan Walters)
- - rc
- - Added command core/quit (Saksham Khanna)
- - Bug Fixes
- - sync
- - Make --update/-u not transfer files that haven’t changed
- (Nick Craig-Wood)
- - Free objects after they come out of the transfer pipe to
- save memory (Nick Craig-Wood)
- - Fix --files-from without --no-traverse doing a recursive
- scan (Nick Craig-Wood)
- - operations
- - Fix accounting for server side copies (Nick Craig-Wood)
- - Display ‘All duplicates removed’ only if dedupe successful
- (Sezal Agrawal)
- - Display ‘Deleted X extra copies’ only if dedupe successful
- (Sezal Agrawal)
- - accounting
- - Only allow up to 100 completed transfers in the accounting
- list to save memory (Nick Craig-Wood)
- - Cull the old time ranges when possible to save memory (Nick
- Craig-Wood)
- - Fix panic due to server-side copy fallback (Ivan Andreev)
- - Fix memory leak noticeable for transfers of large numbers of
- objects (Nick Craig-Wood)
- - Fix total duration calculation (Nick Craig-Wood)
- - cmd
- - Fix environment variables not setting command line flags
- (Nick Craig-Wood)
- - Make autocomplete compatible with bash’s posix mode for
- macOS (Danil Semelenov)
- - Make --progress work in git bash on Windows (Nick
- Craig-Wood)
- - Fix ‘compopt: command not found’ on autocomplete on macOS
- (Danil Semelenov)
- - config
- - Fix setting of non top level flags from environment
- variables (Nick Craig-Wood)
- - Check config names more carefully and report errors (Nick
- Craig-Wood)
- - Remove error: can’t use --size-only and --ignore-size
- together. (Nick Craig-Wood)
- - filter: Prevent mixing options when --files-from is in use
- (Michele Caci)
- - serve sftp: Fix crash on unsupported operations (eg Readlink)
- (Nick Craig-Wood)
- - Mount
- - Allow files of unkown size to be read properly (Nick Craig-Wood)
- - Skip tests on <= 2 CPUs to avoid lockup (Nick Craig-Wood)
- - Fix panic on File.Open (Nick Craig-Wood)
- - Fix “mount_fusefs: -o timeout=: option not supported” on FreeBSD
- (Nick Craig-Wood)
- - Don’t pass huge filenames (>4k) to FUSE as it can’t cope (Nick
- Craig-Wood)
- - VFS
- - Add flag --vfs-case-insensitive for windows/macOS mounts (Ivan
- Andreev)
- - Make objects of unknown size readable through the VFS (Nick
- Craig-Wood)
- - Move writeback of dirty data out of close() method into its own
- method (FlushWrites) and remove close() call from Flush() (Brett
- Dutro)
- - Stop empty dirs disappearing when renamed on bucket based
- remotes (Nick Craig-Wood)
- - Stop change notify polling clearing so much of the directory
- cache (Nick Craig-Wood)
- - Azure Blob
- - Disable logging to the Windows event log (Nick Craig-Wood)
- - B2
- - Remove unverified: prefix on sha1 to improve interop (eg with
- CyberDuck) (Nick Craig-Wood)
- - Box
- - Add options to get access token via JWT auth (David)
- - Drive
- - Disable HTTP/2 by default to work around INTERNAL_ERROR problems
- (Nick Craig-Wood)
- - Make sure that drive root ID is always canonical (Nick
- Craig-Wood)
- - Fix --drive-shared-with-me from the root with lsand --fast-list
- (Nick Craig-Wood)
- - Fix ChangeNotify polling for shared drives (Nick Craig-Wood)
- - Fix change notify polling when using appDataFolder (Nick
- Craig-Wood)
- - Dropbox
- - Make disallowed filenames errors not retry (Nick Craig-Wood)
- - Fix nil pointer exception on restricted files (Nick Craig-Wood)
- - Fichier
- - Fix accessing files > 2GB on 32 bit systems (Nick Craig-Wood)
- - FTP
- - Allow disabling EPSV mode (Jon Fautley)
- - HTTP
- - HEAD directory entries in parallel to speedup (Nick Craig-Wood)
- - Add --http-no-head to stop rclone doing HEAD in listings (Nick
- Craig-Wood)
- - Putio
- - Add ability to resume uploads (Cenk Alti)
- - S3
- - Fix signature v2_auth headers (Anthony Rusdi)
- - Fix encoding for control characters (Nick Craig-Wood)
- - Only ask for URL encoded directory listings if we need them on
- Ceph (Nick Craig-Wood)
- - Add option for multipart failiure behaviour (Aleksandar
- Jankovic)
- - Support for multipart copy (庄天翼)
- - Fix nil pointer reference if no metadata returned for object
- (Nick Craig-Wood)
- - SFTP
- - Fix --sftp-ask-password trying to contact the ssh agent (Nick
- Craig-Wood)
- - Fix hashes of files with backslashes (Nick Craig-Wood)
- - Include more ciphers with --sftp-use-insecure-cipher (Carlos
- Ferreyra)
- - WebDAV
- - Parse and return Sharepoint error response (Henning Surmeier)
- v1.49.5 - 2019-10-05
- - Bug Fixes
- - Revert back to go1.12.x for the v1.49.x builds as go1.13.x was
- causing issues (Nick Craig-Wood)
- - Fix rpm packages by using master builds of nfpm (Nick
- Craig-Wood)
- - Fix macOS build after brew changes (Nick Craig-Wood)
- v1.49.4 - 2019-09-29
- - Bug Fixes
- - cmd/rcd: Address ZipSlip vulnerability (Richard Patel)
- - accounting: Fix file handle leak on errors (Nick Craig-Wood)
- - oauthutil: Fix security problem when running with two users on
- the same machine (Nick Craig-Wood)
- - FTP
- - Fix listing of an empty root returning: error dir not found
- (Nick Craig-Wood)
- - S3
- - Fix SetModTime on GLACIER/ARCHIVE objects and implement set/get
- tier (Nick Craig-Wood)
- v1.49.3 - 2019-09-15
- - Bug Fixes
- - accounting
- - Fix total duration calculation (Aleksandar Jankovic)
- - Fix “file already closed” on transfer retries (Nick
- Craig-Wood)
- v1.49.2 - 2019-09-08
- - New Features
- - build: Add Docker workflow support (Alfonso Montero)
- - Bug Fixes
- - accounting: Fix locking in Transfer to avoid deadlock with
- --progress (Nick Craig-Wood)
- - docs: Fix template argument for mktemp in install.sh (Cnly)
- - operations: Fix -u/--update with google photos / files of
- unknown size (Nick Craig-Wood)
- - rc: Fix docs for config/create /update /password (Nick
- Craig-Wood)
- - Google Cloud Storage
- - Fix need for elevated permissions on SetModTime (Nick
- Craig-Wood)
- v1.49.1 - 2019-08-28
- - Bug Fixes
- - config: Fix generated passwords being stored as empty password
- (Nick Craig-Wood)
- - rcd: Added missing parameter for web-gui info logs. (Chaitanya)
- - Googlephotos
- - Fix crash on error response (Nick Craig-Wood)
- - Onedrive
- - Fix crash on error response (Nick Craig-Wood)
- v1.49.0 - 2019-08-26
- - New backends
- - 1fichier (Laura Hausmann)
- - Google Photos (Nick Craig-Wood)
- - Putio (Cenk Alti)
- - premiumize.me (Nick Craig-Wood)
- - New Features
- - Experimental web GUI (Chaitanya Bankanhal)
- - Implement --compare-dest & --copy-dest (yparitcher)
- - Implement --suffix without --backup-dir for backup to current
- dir (yparitcher)
- - config reconnect to re-login (re-run the oauth login) for the
- backend. (Nick Craig-Wood)
- - config userinfo to discover which user you are logged in as.
- (Nick Craig-Wood)
- - config disconnect to disconnect you (log out) from the backend.
- (Nick Craig-Wood)
- - Add --use-json-log for JSON logging (justinalin)
- - Add context propagation to rclone (Aleksandar Jankovic)
- - Reworking internal statistics interfaces so they work with rc
- jobs (Aleksandar Jankovic)
- - Add Higher units for ETA (AbelThar)
- - Update rclone logos to new design (Andreas Chlupka)
- - hash: Add CRC-32 support (Cenk Alti)
- - help showbackend: Fixed advanced option category when there are
- no standard options (buengese)
- - ncdu: Display/Copy to Clipboard Current Path (Gary Kim)
- - operations:
- - Run hashing operations in parallel (Nick Craig-Wood)
- - Don’t calculate checksums when using --ignore-checksum (Nick
- Craig-Wood)
- - Check transfer hashes when using --size-only mode (Nick
- Craig-Wood)
- - Disable multi thread copy for local to local copies (Nick
- Craig-Wood)
- - Debug successful hashes as well as failures (Nick
- Craig-Wood)
- - rc
- - Add ability to stop async jobs (Aleksandar Jankovic)
- - Return current settings if core/bwlimit called without
- parameters (Nick Craig-Wood)
- - Rclone-WebUI integration with rclone (Chaitanya Bankanhal)
- - Added command line parameter to control the cross origin
- resource sharing (CORS) in the rcd. (Security Improvement)
- (Chaitanya Bankanhal)
- - Add anchor tags to the docs so links are consistent (Nick
- Craig-Wood)
- - Remove _async key from input parameters after parsing so
- later operations won’t get confused (buengese)
- - Add call to clear stats (Aleksandar Jankovic)
- - rcd
- - Auto-login for web-gui (Chaitanya Bankanhal)
- - Implement --baseurl for rcd and web-gui (Chaitanya
- Bankanhal)
- - serve dlna
- - Only select interfaces which can multicast for SSDP (Nick
- Craig-Wood)
- - Add more builtin mime types to cover standard audio/video
- (Nick Craig-Wood)
- - Fix missing mime types on Android causing missing videos
- (Nick Craig-Wood)
- - serve ftp
- - Refactor to bring into line with other serve commands (Nick
- Craig-Wood)
- - Implement --auth-proxy (Nick Craig-Wood)
- - serve http: Implement --baseurl (Nick Craig-Wood)
- - serve restic: Implement --baseurl (Nick Craig-Wood)
- - serve sftp
- - Implement auth proxy (Nick Craig-Wood)
- - Fix detection of whether server is authorized (Nick
- Craig-Wood)
- - serve webdav
- - Implement --baseurl (Nick Craig-Wood)
- - Support --auth-proxy (Nick Craig-Wood)
- - Bug Fixes
- - Make “bad record MAC” a retriable error (Nick Craig-Wood)
- - copyurl: Fix copying files that return HTTP errors (Nick
- Craig-Wood)
- - march: Fix checking sub-directories when using --no-traverse
- (buengese)
- - rc
- - Fix unmarshalable http.AuthFn in options and put in test for
- marshalability (Nick Craig-Wood)
- - Move job expire flags to rc to fix initalization problem
- (Nick Craig-Wood)
- - Fix --loopback with rc/list and others (Nick Craig-Wood)
- - rcat: Fix slowdown on systems with multiple hashes (Nick
- Craig-Wood)
- - rcd: Fix permissions problems on cache directory with web gui
- download (Nick Craig-Wood)
- - Mount
- - Default --deamon-timout to 15 minutes on macOS and FreeBSD (Nick
- Craig-Wood)
- - Update docs to show mounting from root OK for bucket based (Nick
- Craig-Wood)
- - Remove nonseekable flag from write files (Nick Craig-Wood)
- - VFS
- - Make write without cache more efficient (Nick Craig-Wood)
- - Fix --vfs-cache-mode minimal and writes ignoring cached files
- (Nick Craig-Wood)
- - Local
- - Add --local-case-sensitive and --local-case-insensitive (Nick
- Craig-Wood)
- - Avoid polluting page cache when uploading local files to remote
- backends (Michał Matczuk)
- - Don’t calculate any hashes by default (Nick Craig-Wood)
- - Fadvise run syscall on a dedicated go routine (Michał Matczuk)
- - Azure Blob
- - Azure Storage Emulator support (Sandeep)
- - Updated config help details to remove connection string
- references (Sandeep)
- - Make all operations work from the root (Nick Craig-Wood)
- - B2
- - Implement link sharing (yparitcher)
- - Enable server side copy to copy between buckets (Nick
- Craig-Wood)
- - Make all operations work from the root (Nick Craig-Wood)
- - Drive
- - Fix server side copy of big files (Nick Craig-Wood)
- - Update API for teamdrive use (Nick Craig-Wood)
- - Add error for purge with --drive-trashed-only (ginvine)
- - Fichier
- - Make FolderID int and adjust related code (buengese)
- - Google Cloud Storage
- - Reduce oauth scope requested as suggested by Google (Nick
- Craig-Wood)
- - Make all operations work from the root (Nick Craig-Wood)
- - HTTP
- - Add --http-headers flag for setting arbitrary headers (Nick
- Craig-Wood)
- - Jottacloud
- - Use new api for retrieving internal username (buengese)
- - Refactor configuration and minor cleanup (buengese)
- - Koofr
- - Support setting modification times on Koofr backend. (jaKa)
- - Opendrive
- - Refactor to use existing lib/rest facilities for uploads (Nick
- Craig-Wood)
- - Qingstor
- - Upgrade to v3 SDK and fix listing loop (Nick Craig-Wood)
- - Make all operations work from the root (Nick Craig-Wood)
- - S3
- - Add INTELLIGENT_TIERING storage class (Matti Niemenmaa)
- - Make all operations work from the root (Nick Craig-Wood)
- - SFTP
- - Add missing interface check and fix About (Nick Craig-Wood)
- - Completely ignore all modtime checks if SetModTime=false (Jon
- Fautley)
- - Support md5/sha1 with rsync.net (Nick Craig-Wood)
- - Save the md5/sha1 command in use to the config file for
- efficiency (Nick Craig-Wood)
- - Opt-in support for diffie-hellman-group-exchange-sha256
- diffie-hellman-group-exchange-sha1 (Yi FU)
- - Swift
- - Use FixRangeOption to fix 0 length files via the VFS (Nick
- Craig-Wood)
- - Fix upload when using no_chunk to return the correct size (Nick
- Craig-Wood)
- - Make all operations work from the root (Nick Craig-Wood)
- - Fix segments leak during failed large file uploads.
- (nguyenhuuluan434)
- - WebDAV
- - Add --webdav-bearer-token-command (Nick Craig-Wood)
- - Refresh token when it expires with --webdav-bearer-token-command
- (Nick Craig-Wood)
- - Add docs for using bearer_token_command with oidc-agent (Paul
- Millar)
- v1.48.0 - 2019-06-15
- - New commands
- - serve sftp: Serve an rclone remote over SFTP (Nick Craig-Wood)
- - New Features
- - Multi threaded downloads to local storage (Nick Craig-Wood)
- - controlled with --multi-thread-cutoff and
- --multi-thread-streams
- - Use rclone.conf from rclone executable directory to enable
- portable use (albertony)
- - Allow sync of a file and a directory with the same name
- (forgems)
- - this is common on bucket based remotes, eg s3, gcs
- - Add --ignore-case-sync for forced case insensitivity (garry415)
- - Implement --stats-one-line-date and --stats-one-line-date-format
- (Peter Berbec)
- - Log an ERROR for all commands which exit with non-zero status
- (Nick Craig-Wood)
- - Use go-homedir to read the home directory more reliably (Nick
- Craig-Wood)
- - Enable creating encrypted config through external script
- invocation (Wojciech Smigielski)
- - build: Drop support for go1.8 (Nick Craig-Wood)
- - config: Make config create/update encrypt passwords where
- necessary (Nick Craig-Wood)
- - copyurl: Honor --no-check-certificate (Stefan Breunig)
- - install: Linux skip man pages if no mandb (didil)
- - lsf: Support showing the Tier of the object (Nick Craig-Wood)
- - lsjson
- - Added EncryptedPath to output (calisro)
- - Support showing the Tier of the object (Nick Craig-Wood)
- - Add IsBucket field for bucket based remote listing of the
- root (Nick Craig-Wood)
- - rc
- - Add --loopback flag to run commands directly without a
- server (Nick Craig-Wood)
- - Add operations/fsinfo: Return information about the remote
- (Nick Craig-Wood)
- - Skip auth for OPTIONS request (Nick Craig-Wood)
- - cmd/providers: Add DefaultStr, ValueStr and Type fields
- (Nick Craig-Wood)
- - jobs: Make job expiry timeouts configurable (Aleksandar
- Jankovic)
- - serve dlna reworked and improved (Dan Walters)
- - serve ftp: add --ftp-public-ip flag to specify public IP
- (calistri)
- - serve restic: Add support for --private-repos in serve restic
- (Florian Apolloner)
- - serve webdav: Combine serve webdav and serve http (Gary Kim)
- - size: Ignore negative sizes when calculating total (Garry
- McNulty)
- - Bug Fixes
- - Make move and copy individual files obey --backup-dir (Nick
- Craig-Wood)
- - If --ignore-checksum is in effect, don’t calculate checksum
- (Nick Craig-Wood)
- - moveto: Fix case-insensitive same remote move (Gary Kim)
- - rc: Fix serving bucket based objects with --rc-serve (Nick
- Craig-Wood)
- - serve webdav: Fix serveDir not being updated with changes from
- webdav (Gary Kim)
- - Mount
- - Fix poll interval documentation (Animosity022)
- - VFS
- - Make WriteAt for non cached files work with non-sequential
- writes (Nick Craig-Wood)
- - Local
- - Only calculate the required hashes for big speedup (Nick
- Craig-Wood)
- - Log errors when listing instead of returning an error (Nick
- Craig-Wood)
- - Fix preallocate warning on Linux with ZFS (Nick Craig-Wood)
- - Crypt
- - Make rclone dedupe work through crypt (Nick Craig-Wood)
- - Fix wrapping of ChangeNotify to decrypt directories properly
- (Nick Craig-Wood)
- - Support PublicLink (rclone link) of underlying backend (Nick
- Craig-Wood)
- - Implement Optional methods SetTier, GetTier (Nick Craig-Wood)
- - B2
- - Implement server side copy (Nick Craig-Wood)
- - Implement SetModTime (Nick Craig-Wood)
- - Drive
- - Fix move and copy from TeamDrive to GDrive (Fionera)
- - Add notes that cleanup works in the background on drive (Nick
- Craig-Wood)
- - Add --drive-server-side-across-configs to default back to old
- server side copy semantics by default (Nick Craig-Wood)
- - Add --drive-size-as-quota to show storage quota usage for file
- size (Garry McNulty)
- - FTP
- - Add FTP List timeout (Jeff Quinn)
- - Add FTP over TLS support (Gary Kim)
- - Add --ftp-no-check-certificate option for FTPS (Gary Kim)
- - Google Cloud Storage
- - Fix upload errors when uploading pre 1970 files (Nick
- Craig-Wood)
- - Jottacloud
- - Add support for selecting device and mountpoint. (buengese)
- - Mega
- - Add cleanup support (Gary Kim)
- - Onedrive
- - More accurately check if root is found (Cnly)
- - S3
- - Suppport S3 Accelerated endpoints with
- --s3-use-accelerate-endpoint (Nick Craig-Wood)
- - Add config info for Wasabi’s EU Central endpoint (Robert Marko)
- - Make SetModTime work for GLACIER while syncing (Philip Harvey)
- - SFTP
- - Add About support (Gary Kim)
- - Fix about parsing of df results so it can cope with -ve results
- (Nick Craig-Wood)
- - Send custom client version and debug server version (Nick
- Craig-Wood)
- - WebDAV
- - Retry on 423 Locked errors (Nick Craig-Wood)
- v1.47.0 - 2019-04-13
- - New backends
- - Backend for Koofr cloud storage service. (jaKa)
- - New Features
- - Resume downloads if the reader fails in copy (Nick Craig-Wood)
- - this means rclone will restart transfers if the source has
- an error
- - this is most useful for downloads or cloud to cloud copies
- - Use --fast-list for listing operations where it won’t use more
- memory (Nick Craig-Wood)
- - this should speed up the following operations on remotes
- which support ListR
- - dedupe, serve restic lsf, ls, lsl, lsjson, lsd, md5sum,
- sha1sum, hashsum, size, delete, cat, settier
- - use --disable ListR to get old behaviour if required
- - Make --files-from traverse the destination unless --no-traverse
- is set (Nick Craig-Wood)
- - this fixes --files-from with Google drive and excessive API
- use in general.
- - Make server side copy account bytes and obey --max-transfer
- (Nick Craig-Wood)
- - Add --create-empty-src-dirs flag and default to not creating
- empty dirs (ishuah)
- - Add client side TLS/SSL flags
- --ca-cert/--client-cert/--client-key (Nick Craig-Wood)
- - Implement --suffix-keep-extension for use with --suffix (Nick
- Craig-Wood)
- - build:
- - Switch to semvar compliant version tags to be go modules
- compliant (Nick Craig-Wood)
- - Update to use go1.12.x for the build (Nick Craig-Wood)
- - serve dlna: Add connection manager service description to
- improve compatibility (Dan Walters)
- - lsf: Add ‘e’ format to show encrypted names and ‘o’ for original
- IDs (Nick Craig-Wood)
- - lsjson: Added --files-only and --dirs-only flags (calistri)
- - rc: Implement operations/publiclink the equivalent of
- rclone link (Nick Craig-Wood)
- - Bug Fixes
- - accounting: Fix total ETA when --stats-unit bits is in effect
- (Nick Craig-Wood)
- - Bash TAB completion
- - Use private custom func to fix clash between rclone and
- kubectl (Nick Craig-Wood)
- - Fix for remotes with underscores in their names (Six)
- - Fix completion of remotes (Florian Gamböck)
- - Fix autocompletion of remote paths with spaces (Danil
- Semelenov)
- - serve dlna: Fix root XML service descriptor (Dan Walters)
- - ncdu: Fix display corruption with Chinese characters (Nick
- Craig-Wood)
- - Add SIGTERM to signals which run the exit handlers on unix (Nick
- Craig-Wood)
- - rc: Reload filter when the options are set via the rc (Nick
- Craig-Wood)
- - VFS / Mount
- - Fix FreeBSD: Ignore Truncate if called with no readers and
- already the correct size (Nick Craig-Wood)
- - Read directory and check for a file before mkdir (Nick
- Craig-Wood)
- - Shorten the locking window for vfs/refresh (Nick Craig-Wood)
- - Azure Blob
- - Enable MD5 checksums when uploading files bigger than the
- “Cutoff” (Dr.Rx)
- - Fix SAS URL support (Nick Craig-Wood)
- - B2
- - Allow manual configuration of backblaze downloadUrl (Vince)
- - Ignore already_hidden error on remove (Nick Craig-Wood)
- - Ignore malformed src_last_modified_millis (Nick Craig-Wood)
- - Drive
- - Add --skip-checksum-gphotos to ignore incorrect checksums on
- Google Photos (Nick Craig-Wood)
- - Allow server side move/copy between different remotes. (Fionera)
- - Add docs on team drives and --fast-list eventual consistency
- (Nestar47)
- - Fix imports of text files (Nick Craig-Wood)
- - Fix range requests on 0 length files (Nick Craig-Wood)
- - Fix creation of duplicates with server side copy (Nick
- Craig-Wood)
- - Dropbox
- - Retry blank errors to fix long listings (Nick Craig-Wood)
- - FTP
- - Add --ftp-concurrency to limit maximum number of connections
- (Nick Craig-Wood)
- - Google Cloud Storage
- - Fall back to default application credentials (marcintustin)
- - Allow bucket policy only buckets (Nick Craig-Wood)
- - HTTP
- - Add --http-no-slash for websites with directories with no
- slashes (Nick Craig-Wood)
- - Remove duplicates from listings (Nick Craig-Wood)
- - Fix socket leak on 404 errors (Nick Craig-Wood)
- - Jottacloud
- - Fix token refresh (Sebastian Bünger)
- - Add device registration (Oliver Heyme)
- - Onedrive
- - Implement graceful cancel of multipart uploads if rclone is
- interrupted (Cnly)
- - Always add trailing colon to path when addressing items, (Cnly)
- - Return errors instead of panic for invalid uploads (Fabian
- Möller)
- - S3
- - Add support for “Glacier Deep Archive” storage class (Manu)
- - Update Dreamhost endpoint (Nick Craig-Wood)
- - Note incompatibility with CEPH Jewel (Nick Craig-Wood)
- - SFTP
- - Allow custom ssh client config (Alexandru Bumbacea)
- - Swift
- - Obey Retry-After to enable OVH restore from cold storage (Nick
- Craig-Wood)
- - Work around token expiry on CEPH (Nick Craig-Wood)
- - WebDAV
- - Allow IsCollection property to be integer or boolean (Nick
- Craig-Wood)
- - Fix race when creating directories (Nick Craig-Wood)
- - Fix About/df when reading the available/total returns 0 (Nick
- Craig-Wood)
- v1.46 - 2019-02-09
- - New backends
- - Support Alibaba Cloud (Aliyun) OSS via the s3 backend (Nick
- Craig-Wood)
- - New commands
- - serve dlna: serves a remove via DLNA for the local network
- (nicolov)
- - New Features
- - copy, move: Restore deprecated --no-traverse flag (Nick
- Craig-Wood)
- - This is useful for when transferring a small number of files
- into a large destination
- - genautocomplete: Add remote path completion for bash completion
- (Christopher Peterson & Danil Semelenov)
- - Buffer memory handling reworked to return memory to the OS
- better (Nick Craig-Wood)
- - Buffer recycling library to replace sync.Pool
- - Optionally use memory mapped memory for better memory
- shrinking
- - Enable with --use-mmap if having memory problems - not
- default yet
- - Parallelise reading of files specified by --files-from (Nick
- Craig-Wood)
- - check: Add stats showing total files matched. (Dario Guzik)
- - Allow rename/delete open files under Windows (Nick Craig-Wood)
- - lsjson: Use exactly the correct number of decimal places in the
- seconds (Nick Craig-Wood)
- - Add cookie support with cmdline switch --use-cookies for all
- HTTP based remotes (qip)
- - Warn if --checksum is set but there are no hashes available
- (Nick Craig-Wood)
- - Rework rate limiting (pacer) to be more accurate and allow
- bursting (Nick Craig-Wood)
- - Improve error reporting for too many/few arguments in commands
- (Nick Craig-Wood)
- - listremotes: Remove -l short flag as it conflicts with the new
- global flag (weetmuts)
- - Make http serving with auth generate INFO messages on auth fail
- (Nick Craig-Wood)
- - Bug Fixes
- - Fix layout of stats (Nick Craig-Wood)
- - Fix --progress crash under Windows Jenkins (Nick Craig-Wood)
- - Fix transfer of google/onedrive docs by calling Rcat in Copy
- when size is -1 (Cnly)
- - copyurl: Fix checking of --dry-run (Denis Skovpen)
- - Mount
- - Check that mountpoint and local directory to mount don’t overlap
- (Nick Craig-Wood)
- - Fix mount size under 32 bit Windows (Nick Craig-Wood)
- - VFS
- - Implement renaming of directories for backends without DirMove
- (Nick Craig-Wood)
- - now all backends except b2 support renaming directories
- - Implement --vfs-cache-max-size to limit the total size of the
- cache (Nick Craig-Wood)
- - Add --dir-perms and --file-perms flags to set default
- permissions (Nick Craig-Wood)
- - Fix deadlock on concurrent operations on a directory (Nick
- Craig-Wood)
- - Fix deadlock between RWFileHandle.close and File.Remove (Nick
- Craig-Wood)
- - Fix renaming/deleting open files with cache mode “writes” under
- Windows (Nick Craig-Wood)
- - Fix panic on rename with --dry-run set (Nick Craig-Wood)
- - Fix vfs/refresh with recurse=true needing the --fast-list flag
- - Local
- - Add support for -l/--links (symbolic link translation)
- (yair@unicorn)
- - this works by showing links as link.rclonelink - see local
- backend docs for more info
- - this errors if used with -L/--copy-links
- - Fix renaming/deleting open files on Windows (Nick Craig-Wood)
- - Crypt
- - Check for maximum length before decrypting filename to fix panic
- (Garry McNulty)
- - Azure Blob
- - Allow building azureblob backend on *BSD (themylogin)
- - Use the rclone HTTP client to support --dump headers, --tpslimit
- etc (Nick Craig-Wood)
- - Use the s3 pacer for 0 delay in non error conditions (Nick
- Craig-Wood)
- - Ignore directory markers (Nick Craig-Wood)
- - Stop Mkdir attempting to create existing containers (Nick
- Craig-Wood)
- - B2
- - cleanup: will remove unfinished large files >24hrs old (Garry
- McNulty)
- - For a bucket limited application key check the bucket name (Nick
- Craig-Wood)
- - before this, rclone would use the authorised bucket
- regardless of what you put on the command line
- - Added --b2-disable-checksum flag (Wojciech Smigielski)
- - this enables large files to be uploaded without a SHA-1 hash
- for speed reasons
- - Drive
- - Set default pacer to 100ms for 10 tps (Nick Craig-Wood)
- - This fits the Google defaults much better and reduces the
- 403 errors massively
- - Add --drive-pacer-min-sleep and --drive-pacer-burst to
- control the pacer
- - Improve ChangeNotify support for items with multiple parents
- (Fabian Möller)
- - Fix ListR for items with multiple parents - this fixes oddities
- with vfs/refresh (Fabian Möller)
- - Fix using --drive-impersonate and appfolders (Nick Craig-Wood)
- - Fix google docs in rclone mount for some (not all) applications
- (Nick Craig-Wood)
- - Dropbox
- - Retry-After support for Dropbox backend (Mathieu Carbou)
- - FTP
- - Wait for 60 seconds for a connection to Close then declare it
- dead (Nick Craig-Wood)
- - helps with indefinite hangs on some FTP servers
- - Google Cloud Storage
- - Update google cloud storage endpoints (weetmuts)
- - HTTP
- - Add an example with username and password which is supported but
- wasn’t documented (Nick Craig-Wood)
- - Fix backend with --files-from and non-existent files (Nick
- Craig-Wood)
- - Hubic
- - Make error message more informative if authentication fails
- (Nick Craig-Wood)
- - Jottacloud
- - Resume and deduplication support (Oliver Heyme)
- - Use token auth for all API requests Don’t store password anymore
- (Sebastian Bünger)
- - Add support for 2-factor authentification (Sebastian Bünger)
- - Mega
- - Implement v2 account login which fixes logins for newer Mega
- accounts (Nick Craig-Wood)
- - Return error if an unknown length file is attempted to be
- uploaded (Nick Craig-Wood)
- - Add new error codes for better error reporting (Nick Craig-Wood)
- - Onedrive
- - Fix broken support for “shared with me” folders (Alex Chen)
- - Fix root ID not normalised (Cnly)
- - Return err instead of panic on unknown-sized uploads (Cnly)
- - Qingstor
- - Fix go routine leak on multipart upload errors (Nick Craig-Wood)
- - Add upload chunk size/concurrency/cutoff control (Nick
- Craig-Wood)
- - Default --qingstor-upload-concurrency to 1 to work around bug
- (Nick Craig-Wood)
- - S3
- - Implement --s3-upload-cutoff for single part uploads below this
- (Nick Craig-Wood)
- - Change --s3-upload-concurrency default to 4 to increase
- perfomance (Nick Craig-Wood)
- - Add --s3-bucket-acl to control bucket ACL (Nick Craig-Wood)
- - Auto detect region for buckets on operation failure (Nick
- Craig-Wood)
- - Add GLACIER storage class (William Cocker)
- - Add Scaleway to s3 documentation (Rémy Léone)
- - Add AWS endpoint eu-north-1 (weetmuts)
- - SFTP
- - Add support for PEM encrypted private keys (Fabian Möller)
- - Add option to force the usage of an ssh-agent (Fabian Möller)
- - Perform environment variable expansion on key-file (Fabian
- Möller)
- - Fix rmdir on Windows based servers (eg CrushFTP) (Nick
- Craig-Wood)
- - Fix rmdir deleting directory contents on some SFTP servers (Nick
- Craig-Wood)
- - Fix error on dangling symlinks (Nick Craig-Wood)
- - Swift
- - Add --swift-no-chunk to disable segmented uploads in rcat/mount
- (Nick Craig-Wood)
- - Introduce application credential auth support (kayrus)
- - Fix memory usage by slimming Object (Nick Craig-Wood)
- - Fix extra requests on upload (Nick Craig-Wood)
- - Fix reauth on big files (Nick Craig-Wood)
- - Union
- - Fix poll-interval not working (Nick Craig-Wood)
- - WebDAV
- - Support About which means rclone mount will show the correct
- disk size (Nick Craig-Wood)
- - Support MD5 and SHA1 hashes with Owncloud and Nextcloud (Nick
- Craig-Wood)
- - Fail soft on time parsing errors (Nick Craig-Wood)
- - Fix infinite loop on failed directory creation (Nick Craig-Wood)
- - Fix identification of directories for Bitrix Site Manager (Nick
- Craig-Wood)
- - Fix upload of 0 length files on some servers (Nick Craig-Wood)
- - Fix if MKCOL fails with 423 Locked assume the directory exists
- (Nick Craig-Wood)
- v1.45 - 2018-11-24
- - New backends
- - The Yandex backend was re-written - see below for details
- (Sebastian Bünger)
- - New commands
- - rcd: New command just to serve the remote control API (Nick
- Craig-Wood)
- - New Features
- - The remote control API (rc) was greatly expanded to allow full
- control over rclone (Nick Craig-Wood)
- - sensitive operations require authorization or the
- --rc-no-auth flag
- - config/* operations to configure rclone
- - options/* for reading/setting command line flags
- - operations/* for all low level operations, eg copy file,
- list directory
- - sync/* for sync, copy and move
- - --rc-files flag to serve files on the rc http server
- - this is for building web native GUIs for rclone
- - Optionally serving objects on the rc http server
- - Ensure rclone fails to start up if the --rc port is in use
- already
- - See the rc docs for more info
- - sync/copy/move
- - Make --files-from only read the objects specified and don’t
- scan directories (Nick Craig-Wood)
- - This is a huge speed improvement for destinations with
- lots of files
- - filter: Add --ignore-case flag (Nick Craig-Wood)
- - ncdu: Add remove function (‘d’ key) (Henning Surmeier)
- - rc command
- - Add --json flag for structured JSON input (Nick Craig-Wood)
- - Add --user and --pass flags and interpret --rc-user,
- --rc-pass, --rc-addr (Nick Craig-Wood)
- - build
- - Require go1.8 or later for compilation (Nick Craig-Wood)
- - Enable softfloat on MIPS arch (Scott Edlund)
- - Integration test framework revamped with a better report and
- better retries (Nick Craig-Wood)
- - Bug Fixes
- - cmd: Make --progress update the stats correctly at the end (Nick
- Craig-Wood)
- - config: Create config directory on save if it is missing (Nick
- Craig-Wood)
- - dedupe: Check for existing filename before renaming a dupe file
- (ssaqua)
- - move: Don’t create directories with --dry-run (Nick Craig-Wood)
- - operations: Fix Purge and Rmdirs when dir is not the root (Nick
- Craig-Wood)
- - serve http/webdav/restic: Ensure rclone exits if the port is in
- use (Nick Craig-Wood)
- - Mount
- - Make --volname work for Windows and macOS (Nick Craig-Wood)
- - Azure Blob
- - Avoid context deadline exceeded error by setting a large
- TryTimeout value (brused27)
- - Fix erroneous Rmdir error “directory not empty” (Nick
- Craig-Wood)
- - Wait for up to 60s to create a just deleted container (Nick
- Craig-Wood)
- - Dropbox
- - Add dropbox impersonate support (Jake Coggiano)
- - Jottacloud
- - Fix bug in --fast-list handing of empty folders (albertony)
- - Opendrive
- - Fix transfer of files with + and & in (Nick Craig-Wood)
- - Fix retries of upload chunks (Nick Craig-Wood)
- - S3
- - Set ACL for server side copies to that provided by the user
- (Nick Craig-Wood)
- - Fix role_arn, credential_source, … (Erik Swanson)
- - Add config info for Wasabi’s US-West endpoint (Henry Ptasinski)
- - SFTP
- - Ensure file hash checking is really disabled (Jon Fautley)
- - Swift
- - Add pacer for retries to make swift more reliable (Nick
- Craig-Wood)
- - WebDAV
- - Add Content-Type to PUT requests (Nick Craig-Wood)
- - Fix config parsing so --webdav-user and --webdav-pass flags work
- (Nick Craig-Wood)
- - Add RFC3339 date format (Ralf Hemberger)
- - Yandex
- - The yandex backend was re-written (Sebastian Bünger)
- - This implements low level retries (Sebastian Bünger)
- - Copy, Move, DirMove, PublicLink and About optional
- interfaces (Sebastian Bünger)
- - Improved general error handling (Sebastian Bünger)
- - Removed ListR for now due to inconsistent behaviour
- (Sebastian Bünger)
- v1.44 - 2018-10-15
- - New commands
- - serve ftp: Add ftp server (Antoine GIRARD)
- - settier: perform storage tier changes on supported remotes
- (sandeepkru)
- - New Features
- - Reworked command line help
- - Make default help less verbose (Nick Craig-Wood)
- - Split flags up into global and backend flags (Nick
- Craig-Wood)
- - Implement specialised help for flags and backends (Nick
- Craig-Wood)
- - Show URL of backend help page when starting config (Nick
- Craig-Wood)
- - stats: Long names now split in center (Joanna Marek)
- - Add --log-format flag for more control over log output (dcpu)
- - rc: Add support for OPTIONS and basic CORS (frenos)
- - stats: show FatalErrors and NoRetryErrors in stats (Cédric
- Connes)
- - Bug Fixes
- - Fix -P not ending with a new line (Nick Craig-Wood)
- - config: don’t create default config dir when user supplies
- --config (albertony)
- - Don’t print non-ASCII characters with --progress on windows
- (Nick Craig-Wood)
- - Correct logs for excluded items (ssaqua)
- - Mount
- - Remove EXPERIMENTAL tags (Nick Craig-Wood)
- - VFS
- - Fix race condition detected by serve ftp tests (Nick Craig-Wood)
- - Add vfs/poll-interval rc command (Fabian Möller)
- - Enable rename for nearly all remotes using server side Move or
- Copy (Nick Craig-Wood)
- - Reduce directory cache cleared by poll-interval (Fabian Möller)
- - Remove EXPERIMENTAL tags (Nick Craig-Wood)
- - Local
- - Skip bad symlinks in dir listing with -L enabled (Cédric Connes)
- - Preallocate files on Windows to reduce fragmentation (Nick
- Craig-Wood)
- - Preallocate files on linux with fallocate(2) (Nick Craig-Wood)
- - Cache
- - Add cache/fetch rc function (Fabian Möller)
- - Fix worker scale down (Fabian Möller)
- - Improve performance by not sending info requests for cached
- chunks (dcpu)
- - Fix error return value of cache/fetch rc method (Fabian Möller)
- - Documentation fix for cache-chunk-total-size (Anagh Kumar
- Baranwal)
- - Preserve leading / in wrapped remote path (Fabian Möller)
- - Add plex_insecure option to skip certificate validation (Fabian
- Möller)
- - Remove entries that no longer exist in the source (dcpu)
- - Crypt
- - Preserve leading / in wrapped remote path (Fabian Möller)
- - Alias
- - Fix handling of Windows network paths (Nick Craig-Wood)
- - Azure Blob
- - Add --azureblob-list-chunk parameter (Santiago Rodríguez)
- - Implemented settier command support on azureblob remote.
- (sandeepkru)
- - Work around SDK bug which causes errors for chunk-sized files
- (Nick Craig-Wood)
- - Box
- - Implement link sharing. (Sebastian Bünger)
- - Drive
- - Add --drive-import-formats - google docs can now be imported
- (Fabian Möller)
- - Rewrite mime type and extension handling (Fabian Möller)
- - Add document links (Fabian Möller)
- - Add support for multipart document extensions (Fabian
- Möller)
- - Add support for apps-script to json export (Fabian Möller)
- - Fix escaped chars in documents during list (Fabian Möller)
- - Add --drive-v2-download-min-size a workaround for slow downloads
- (Fabian Möller)
- - Improve directory notifications in ChangeNotify (Fabian Möller)
- - When listing team drives in config, continue on failure (Nick
- Craig-Wood)
- - FTP
- - Add a small pause after failed upload before deleting file (Nick
- Craig-Wood)
- - Google Cloud Storage
- - Fix service_account_file being ignored (Fabian Möller)
- - Jottacloud
- - Minor improvement in quota info (omit if unlimited) (albertony)
- - Add --fast-list support (albertony)
- - Add permanent delete support: --jottacloud-hard-delete
- (albertony)
- - Add link sharing support (albertony)
- - Fix handling of reserved characters. (Sebastian Bünger)
- - Fix socket leak on Object.Remove (Nick Craig-Wood)
- - Onedrive
- - Rework to support Microsoft Graph (Cnly)
- - NB this will require re-authenticating the remote
- - Removed upload cutoff and always do session uploads (Oliver
- Heyme)
- - Use single-part upload for empty files (Cnly)
- - Fix new fields not saved when editing old config (Alex Chen)
- - Fix sometimes special chars in filenames not replaced (Alex
- Chen)
- - Ignore OneNote files by default (Alex Chen)
- - Add link sharing support (jackyzy823)
- - S3
- - Use custom pacer, to retry operations when reasonable (Craig
- Miskell)
- - Use configured server-side-encryption and storace class options
- when calling CopyObject() (Paul Kohout)
- - Make --s3-v2-auth flag (Nick Craig-Wood)
- - Fix v2 auth on files with spaces (Nick Craig-Wood)
- - Union
- - Implement union backend which reads from multiple backends
- (Felix Brucker)
- - Implement optional interfaces (Move, DirMove, Copy etc) (Nick
- Craig-Wood)
- - Fix ChangeNotify to support multiple remotes (Fabian Möller)
- - Fix --backup-dir on union backend (Nick Craig-Wood)
- - WebDAV
- - Add another time format (Nick Craig-Wood)
- - Add a small pause after failed upload before deleting file (Nick
- Craig-Wood)
- - Add workaround for missing mtime (buergi)
- - Sharepoint: Renew cookies after 12hrs (Henning Surmeier)
- - Yandex
- - Remove redundant nil checks (teresy)
- v1.43.1 - 2018-09-07
- Point release to fix hubic and azureblob backends.
- - Bug Fixes
- - ncdu: Return error instead of log.Fatal in Show (Fabian Möller)
- - cmd: Fix crash with --progress and --stats 0 (Nick Craig-Wood)
- - docs: Tidy website display (Anagh Kumar Baranwal)
- - Azure Blob:
- - Fix multi-part uploads. (sandeepkru)
- - Hubic
- - Fix uploads (Nick Craig-Wood)
- - Retry auth fetching if it fails to make hubic more reliable
- (Nick Craig-Wood)
- v1.43 - 2018-09-01
- - New backends
- - Jottacloud (Sebastian Bünger)
- - New commands
- - copyurl: copies a URL to a remote (Denis)
- - New Features
- - Reworked config for backends (Nick Craig-Wood)
- - All backend config can now be supplied by command line, env
- var or config file
- - Advanced section in the config wizard for the optional items
- - A large step towards rclone backends being usable in other
- go software
- - Allow on the fly remotes with :backend: syntax
- - Stats revamp
- - Add --progress/-P flag to show interactive progress (Nick
- Craig-Wood)
- - Show the total progress of the sync in the stats (Nick
- Craig-Wood)
- - Add --stats-one-line flag for single line stats (Nick
- Craig-Wood)
- - Added weekday schedule into --bwlimit (Mateusz)
- - lsjson: Add option to show the original object IDs (Fabian
- Möller)
- - serve webdav: Make Content-Type without reading the file and add
- --etag-hash (Nick Craig-Wood)
- - build
- - Build macOS with native compiler (Nick Craig-Wood)
- - Update to use go1.11 for the build (Nick Craig-Wood)
- - rc
- - Added core/stats to return the stats (reddi1)
- - version --check: Prints the current release and beta versions
- (Nick Craig-Wood)
- - Bug Fixes
- - accounting
- - Fix time to completion estimates (Nick Craig-Wood)
- - Fix moving average speed for file stats (Nick Craig-Wood)
- - config: Fix error reading password from piped input (Nick
- Craig-Wood)
- - move: Fix --delete-empty-src-dirs flag to delete all empty dirs
- on move (ishuah)
- - Mount
- - Implement --daemon-timeout flag for OSXFUSE (Nick Craig-Wood)
- - Fix mount --daemon not working with encrypted config (Alex Chen)
- - Clip the number of blocks to 2^32-1 on macOS - fixes borg backup
- (Nick Craig-Wood)
- - VFS
- - Enable vfs-read-chunk-size by default (Fabian Möller)
- - Add the vfs/refresh rc command (Fabian Möller)
- - Add non recursive mode to vfs/refresh rc command (Fabian Möller)
- - Try to seek buffer on read only files (Fabian Möller)
- - Local
- - Fix crash when deprecated --local-no-unicode-normalization is
- supplied (Nick Craig-Wood)
- - Fix mkdir error when trying to copy files to the root of a drive
- on windows (Nick Craig-Wood)
- - Cache
- - Fix nil pointer deref when using lsjson on cached directory
- (Nick Craig-Wood)
- - Fix nil pointer deref for occasional crash on playback (Nick
- Craig-Wood)
- - Crypt
- - Fix accounting when checking hashes on upload (Nick Craig-Wood)
- - Amazon Cloud Drive
- - Make very clear in the docs that rclone has no ACD keys (Nick
- Craig-Wood)
- - Azure Blob
- - Add connection string and SAS URL auth (Nick Craig-Wood)
- - List the container to see if it exists (Nick Craig-Wood)
- - Port new Azure Blob Storage SDK (sandeepkru)
- - Added blob tier, tier between Hot, Cool and Archive.
- (sandeepkru)
- - Remove leading / from paths (Nick Craig-Wood)
- - B2
- - Support Application Keys (Nick Craig-Wood)
- - Remove leading / from paths (Nick Craig-Wood)
- - Box
- - Fix upload of > 2GB files on 32 bit platforms (Nick Craig-Wood)
- - Make --box-commit-retries flag defaulting to 100 to fix large
- uploads (Nick Craig-Wood)
- - Drive
- - Add --drive-keep-revision-forever flag (lewapm)
- - Handle gdocs when filtering file names in list (Fabian Möller)
- - Support using --fast-list for large speedups (Fabian Möller)
- - FTP
- - Fix Put mkParentDir failed: 521 for BunnyCDN (Nick Craig-Wood)
- - Google Cloud Storage
- - Fix index out of range error with --fast-list (Nick Craig-Wood)
- - Jottacloud
- - Fix MD5 error check (Oliver Heyme)
- - Handle empty time values (Martin Polden)
- - Calculate missing MD5s (Oliver Heyme)
- - Docs, fixes and tests for MD5 calculation (Nick Craig-Wood)
- - Add optional MimeTyper interface. (Sebastian Bünger)
- - Implement optional About interface (for df support). (Sebastian
- Bünger)
- - Mega
- - Wait for events instead of arbitrary sleeping (Nick Craig-Wood)
- - Add --mega-hard-delete flag (Nick Craig-Wood)
- - Fix failed logins with upper case chars in email (Nick
- Craig-Wood)
- - Onedrive
- - Shared folder support (Yoni Jah)
- - Implement DirMove (Cnly)
- - Fix rmdir sometimes deleting directories with contents (Nick
- Craig-Wood)
- - Pcloud
- - Delete half uploaded files on upload error (Nick Craig-Wood)
- - Qingstor
- - Remove leading / from paths (Nick Craig-Wood)
- - S3
- - Fix index out of range error with --fast-list (Nick Craig-Wood)
- - Add --s3-force-path-style (Nick Craig-Wood)
- - Add support for KMS Key ID (bsteiss)
- - Remove leading / from paths (Nick Craig-Wood)
- - Swift
- - Add storage_policy (Ruben Vandamme)
- - Make it so just storage_url or auth_token can be overidden (Nick
- Craig-Wood)
- - Fix server side copy bug for unusal file names (Nick Craig-Wood)
- - Remove leading / from paths (Nick Craig-Wood)
- - WebDAV
- - Ensure we call MKCOL with a URL with a trailing / for QNAP
- interop (Nick Craig-Wood)
- - If root ends with / then don’t check if it is a file (Nick
- Craig-Wood)
- - Don’t accept redirects when reading metadata (Nick Craig-Wood)
- - Add bearer token (Macaroon) support for dCache (Nick Craig-Wood)
- - Document dCache and Macaroons (Onno Zweers)
- - Sharepoint recursion with different depth (Henning)
- - Attempt to remove failed uploads (Nick Craig-Wood)
- - Yandex
- - Fix listing/deleting files in the root (Nick Craig-Wood)
- v1.42 - 2018-06-16
- - New backends
- - OpenDrive (Oliver Heyme, Jakub Karlicek, ncw)
- - New commands
- - deletefile command (Filip Bartodziej)
- - New Features
- - copy, move: Copy single files directly, don’t use --files-from
- work-around
- - this makes them much more efficient
- - Implement --max-transfer flag to quit transferring at a limit
- - make exit code 8 for --max-transfer exceeded
- - copy: copy empty source directories to destination (Ishuah
- Kariuki)
- - check: Add --one-way flag (Kasper Byrdal Nielsen)
- - Add siginfo handler for macOS for ctrl-T stats (kubatasiemski)
- - rc
- - add core/gc to run a garbage collection on demand
- - enable go profiling by default on the --rc port
- - return error from remote on failure
- - lsf
- - Add --absolute flag to add a leading / onto path names
- - Add --csv flag for compliant CSV output
- - Add ‘m’ format specifier to show the MimeType
- - Implement ‘i’ format for showing object ID
- - lsjson
- - Add MimeType to the output
- - Add ID field to output to show Object ID
- - Add --retries-sleep flag (Benjamin Joseph Dag)
- - Oauth tidy up web page and error handling (Henning Surmeier)
- - Bug Fixes
- - Password prompt output with --log-file fixed for unix (Filip
- Bartodziej)
- - Calculate ModifyWindow each time on the fly to fix various
- problems (Stefan Breunig)
- - Mount
- - Only print “File.rename error” if there actually is an error
- (Stefan Breunig)
- - Delay rename if file has open writers instead of failing
- outright (Stefan Breunig)
- - Ensure atexit gets run on interrupt
- - macOS enhancements
- - Make --noappledouble --noapplexattr
- - Add --volname flag and remove special chars from it
- - Make Get/List/Set/Remove xattr return ENOSYS for efficiency
- - Make --daemon work for macOS without CGO
- - VFS
- - Add --vfs-read-chunk-size and --vfs-read-chunk-size-limit
- (Fabian Möller)
- - Fix ChangeNotify for new or changed folders (Fabian Möller)
- - Local
- - Fix symlink/junction point directory handling under Windows
- - NB you will need to add -L to your command line to copy
- files with reparse points
- - Cache
- - Add non cached dirs on notifications (Remus Bunduc)
- - Allow root to be expired from rc (Remus Bunduc)
- - Clean remaining empty folders from temp upload path (Remus
- Bunduc)
- - Cache lists using batch writes (Remus Bunduc)
- - Use secure websockets for HTTPS Plex addresses (John Clayton)
- - Reconnect plex websocket on failures (Remus Bunduc)
- - Fix panic when running without plex configs (Remus Bunduc)
- - Fix root folder caching (Remus Bunduc)
- - Crypt
- - Check the crypted hash of files when uploading for extra data
- security
- - Dropbox
- - Make Dropbox for business folders accessible using an initial /
- in the path
- - Google Cloud Storage
- - Low level retry all operations if necessary
- - Google Drive
- - Add --drive-acknowledge-abuse to download flagged files
- - Add --drive-alternate-export to fix large doc export
- - Don’t attempt to choose Team Drives when using rclone config
- create
- - Fix change list polling with team drives
- - Fix ChangeNotify for folders (Fabian Möller)
- - Fix about (and df on a mount) for team drives
- - Onedrive
- - Errorhandler for onedrive for business requests (Henning
- Surmeier)
- - S3
- - Adjust upload concurrency with --s3-upload-concurrency
- (themylogin)
- - Fix --s3-chunk-size which was always using the minimum
- - SFTP
- - Add --ssh-path-override flag (Piotr Oleszczyk)
- - Fix slow downloads for long latency connections
- - Webdav
- - Add workarounds for biz.mail.ru
- - Ignore Reason-Phrase in status line to fix 4shared (Rodrigo)
- - Better error message generation
- v1.41 - 2018-04-28
- - New backends
- - Mega support added
- - Webdav now supports SharePoint cookie authentication (hensur)
- - New commands
- - link: create public link to files and folders (Stefan Breunig)
- - about: gets quota info from a remote (a-roussos, ncw)
- - hashsum: a generic tool for any hash to produce md5sum like
- output
- - New Features
- - lsd: Add -R flag and fix and update docs for all ls commands
- - ncdu: added a “refresh” key - CTRL-L (Keith Goldfarb)
- - serve restic: Add append-only mode (Steve Kriss)
- - serve restic: Disallow overwriting files in append-only mode
- (Alexander Neumann)
- - serve restic: Print actual listener address (Matt Holt)
- - size: Add –json flag (Matthew Holt)
- - sync: implement –ignore-errors (Mateusz Pabian)
- - dedupe: Add dedupe largest functionality (Richard Yang)
- - fs: Extend SizeSuffix to include TB and PB for rclone about
- - fs: add –dump goroutines and –dump openfiles for debugging
- - rc: implement core/memstats to print internal memory usage info
- - rc: new call rc/pid (Michael P. Dubner)
- - Compile
- - Drop support for go1.6
- - Release
- - Fix make tarball (Chih-Hsuan Yen)
- - Bug Fixes
- - filter: fix –min-age and –max-age together check
- - fs: limit MaxIdleConns and MaxIdleConnsPerHost in transport
- - lsd,lsf: make sure all times we output are in local time
- - rc: fix setting bwlimit to unlimited
- - rc: take note of the –rc-addr flag too as per the docs
- - Mount
- - Use About to return the correct disk total/used/free (eg in df)
- - Set --attr-timeout default to 1s - fixes:
- - rclone using too much memory
- - rclone not serving files to samba
- - excessive time listing directories
- - Fix df -i (upstream fix)
- - VFS
- - Filter files . and .. from directory listing
- - Only make the VFS cache if –vfs-cache-mode > Off
- - Local
- - Add –local-no-check-updated to disable updated file checks
- - Retry remove on Windows sharing violation error
- - Cache
- - Flush the memory cache after close
- - Purge file data on notification
- - Always forget parent dir for notifications
- - Integrate with Plex websocket
- - Add rc cache/stats (seuffert)
- - Add info log on notification
- - Box
- - Fix failure reading large directories - parse file/directory
- size as float
- - Dropbox
- - Fix crypt+obfuscate on dropbox
- - Fix repeatedly uploading the same files
- - FTP
- - Work around strange response from box FTP server
- - More workarounds for FTP servers to fix mkParentDir error
- - Fix no error on listing non-existent directory
- - Google Cloud Storage
- - Add service_account_credentials (Matt Holt)
- - Detect bucket presence by listing it - minimises permissions
- needed
- - Ignore zero length directory markers
- - Google Drive
- - Add service_account_credentials (Matt Holt)
- - Fix directory move leaving a hardlinked directory behind
- - Return proper google errors when Opening files
- - When initialized with a filepath, optional features used
- incorrect root path (Stefan Breunig)
- - HTTP
- - Fix sync for servers which don’t return Content-Length in HEAD
- - Onedrive
- - Add QuickXorHash support for OneDrive for business
- - Fix socket leak in multipart session upload
- - S3
- - Look in S3 named profile files for credentials
- - Add --s3-disable-checksum to disable checksum uploading (Chris
- Redekop)
- - Hierarchical configuration support (Giri Badanahatti)
- - Add in config for all the supported S3 providers
- - Add One Zone Infrequent Access storage class (Craig Rachel)
- - Add –use-server-modtime support (Peter Baumgartner)
- - Add –s3-chunk-size option to control multipart uploads
- - Ignore zero length directory markers
- - SFTP
- - Update docs to match code, fix typos and clarify
- disable_hashcheck prompt (Michael G. Noll)
- - Update docs with Synology quirks
- - Fail soft with a debug on hash failure
- - Swift
- - Add –use-server-modtime support (Peter Baumgartner)
- - Webdav
- - Support SharePoint cookie authentication (hensur)
- - Strip leading and trailing / off root
- v1.40 - 2018-03-19
- - New backends
- - Alias backend to create aliases for existing remote names
- (Fabian Möller)
- - New commands
- - lsf: list for parsing purposes (Jakub Tasiemski)
- - by default this is a simple non recursive list of files and
- directories
- - it can be configured to add more info in an easy to parse
- way
- - serve restic: for serving a remote as a Restic REST endpoint
- - This enables restic to use any backends that rclone can
- access
- - Thanks Alexander Neumann for help, patches and review
- - rc: enable the remote control of a running rclone
- - The running rclone must be started with –rc and related
- flags.
- - Currently there is support for bwlimit, and flushing for
- mount and cache.
- - New Features
- - --max-delete flag to add a delete threshold (Bjørn Erik
- Pedersen)
- - All backends now support RangeOption for ranged Open
- - cat: Use RangeOption for limited fetches to make more
- efficient
- - cryptcheck: make reading of nonce more efficient with
- RangeOption
- - serve http/webdav/restic
- - support SSL/TLS
- - add --user --pass and --htpasswd for authentication
- - copy/move: detect file size change during copy/move and abort
- transfer (ishuah)
- - cryptdecode: added option to return encrypted file names.
- (ishuah)
- - lsjson: add --encrypted to show encrypted name (Jakub Tasiemski)
- - Add --stats-file-name-length to specify the printed file name
- length for stats (Will Gunn)
- - Compile
- - Code base was shuffled and factored
- - backends moved into a backend directory
- - large packages split up
- - See the CONTRIBUTING.md doc for info as to what lives where
- now
- - Update to using go1.10 as the default go version
- - Implement daily full integration tests
- - Release
- - Include a source tarball and sign it and the binaries
- - Sign the git tags as part of the release process
- - Add .deb and .rpm packages as part of the build
- - Make a beta release for all branches on the main repo (but not
- pull requests)
- - Bug Fixes
- - config: fixes errors on non existing config by loading config
- file only on first access
- - config: retry saving the config after failure (Mateusz)
- - sync: when using --backup-dir don’t delete files if we can’t set
- their modtime
- - this fixes odd behaviour with Dropbox and --backup-dir
- - fshttp: fix idle timeouts for HTTP connections
- - serve http: fix serving files with : in - fixes
- - Fix --exclude-if-present to ignore directories which it doesn’t
- have permission for (Iakov Davydov)
- - Make accounting work properly with crypt and b2
- - remove --no-traverse flag because it is obsolete
- - Mount
- - Add --attr-timeout flag to control attribute caching in kernel
- - this now defaults to 0 which is correct but less efficient
- - see the mount docs for more info
- - Add --daemon flag to allow mount to run in the background
- (ishuah)
- - Fix: Return ENOSYS rather than EIO on attempted link
- - This fixes FileZilla accessing an rclone mount served over
- sftp.
- - Fix setting modtime twice
- - Mount tests now run on CI for Linux (mount & cmount)/Mac/Windows
- - Many bugs fixed in the VFS layer - see below
- - VFS
- - Many fixes for --vfs-cache-mode writes and above
- - Update cached copy if we know it has changed (fixes stale
- data)
- - Clean path names before using them in the cache
- - Disable cache cleaner if --vfs-cache-poll-interval=0
- - Fill and clean the cache immediately on startup
- - Fix Windows opening every file when it stats the file
- - Fix applying modtime for an open Write Handle
- - Fix creation of files when truncating
- - Write 0 bytes when flushing unwritten handles to avoid race
- conditions in FUSE
- - Downgrade “poll-interval is not supported” message to Info
- - Make OpenFile and friends return EINVAL if O_RDONLY and O_TRUNC
- - Local
- - Downgrade “invalid cross-device link: trying copy” to debug
- - Make DirMove return fs.ErrorCantDirMove to allow fallback to
- Copy for cross device
- - Fix race conditions updating the hashes
- - Cache
- - Add support for polling - cache will update when remote changes
- on supported backends
- - Reduce log level for Plex api
- - Fix dir cache issue
- - Implement --cache-db-wait-time flag
- - Improve efficiency with RangeOption and RangeSeek
- - Fix dirmove with temp fs enabled
- - Notify vfs when using temp fs
- - Offline uploading
- - Remote control support for path flushing
- - Amazon cloud drive
- - Rclone no longer has any working keys - disable integration
- tests
- - Implement DirChangeNotify to notify cache/vfs/mount of changes
- - Azureblob
- - Don’t check for bucket/container presense if listing was OK
- - this makes rclone do one less request per invocation
- - Improve accounting for chunked uploads
- - Backblaze B2
- - Don’t check for bucket/container presense if listing was OK
- - this makes rclone do one less request per invocation
- - Box
- - Improve accounting for chunked uploads
- - Dropbox
- - Fix custom oauth client parameters
- - Google Cloud Storage
- - Don’t check for bucket/container presense if listing was OK
- - this makes rclone do one less request per invocation
- - Google Drive
- - Migrate to api v3 (Fabian Möller)
- - Add scope configuration and root folder selection
- - Add --drive-impersonate for service accounts
- - thanks to everyone who tested, explored and contributed docs
- - Add --drive-use-created-date to use created date as modified
- date (nbuchanan)
- - Request the export formats only when required
- - This makes rclone quicker when there are no google docs
- - Fix finding paths with latin1 chars (a workaround for a drive
- bug)
- - Fix copying of a single Google doc file
- - Fix --drive-auth-owner-only to look in all directories
- - HTTP
- - Fix handling of directories with & in
- - Onedrive
- - Removed upload cutoff and always do session uploads
- - this stops the creation of multiple versions on business
- onedrive
- - Overwrite object size value with real size when reading file.
- (Victor)
- - this fixes oddities when onedrive misreports the size of
- images
- - Pcloud
- - Remove unused chunked upload flag and code
- - Qingstor
- - Don’t check for bucket/container presense if listing was OK
- - this makes rclone do one less request per invocation
- - S3
- - Support hashes for multipart files (Chris Redekop)
- - Initial support for IBM COS (S3) (Giri Badanahatti)
- - Update docs to discourage use of v2 auth with CEPH and others
- - Don’t check for bucket/container presense if listing was OK
- - this makes rclone do one less request per invocation
- - Fix server side copy and set modtime on files with + in
- - SFTP
- - Add option to disable remote hash check command execution (Jon
- Fautley)
- - Add --sftp-ask-password flag to prompt for password when needed
- (Leo R. Lundgren)
- - Add set_modtime configuration option
- - Fix following of symlinks
- - Fix reading config file outside of Fs setup
- - Fix reading $USER in username fallback not $HOME
- - Fix running under crontab - Use correct OS way of reading
- username
- - Swift
- - Fix refresh of authentication token
- - in v1.39 a bug was introduced which ignored new tokens -
- this fixes it
- - Fix extra HEAD transaction when uploading a new file
- - Don’t check for bucket/container presense if listing was OK
- - this makes rclone do one less request per invocation
- - Webdav
- - Add new time formats to support mydrive.ch and others
- v1.39 - 2017-12-23
- - New backends
- - WebDAV
- - tested with nextcloud, owncloud, put.io and others!
- - Pcloud
- - cache - wraps a cache around other backends (Remus Bunduc)
- - useful in combination with mount
- - NB this feature is in beta so use with care
- - New commands
- - serve command with subcommands:
- - serve webdav: this implements a webdav server for any rclone
- remote.
- - serve http: command to serve a remote over HTTP
- - config: add sub commands for full config file management
- - create/delete/dump/edit/file/password/providers/show/update
- - touch: to create or update the timestamp of a file (Jakub
- Tasiemski)
- - New Features
- - curl install for rclone (Filip Bartodziej)
- - –stats now shows percentage, size, rate and ETA in condensed
- form (Ishuah Kariuki)
- - –exclude-if-present to exclude a directory if a file is present
- (Iakov Davydov)
- - rmdirs: add –leave-root flag (lewpam)
- - move: add –delete-empty-src-dirs flag to remove dirs after move
- (Ishuah Kariuki)
- - Add –dump flag, introduce –dump requests, responses and remove
- –dump-auth, –dump-filters
- - Obscure X-Auth-Token: from headers when dumping too
- - Document and implement exit codes for different failure modes
- (Ishuah Kariuki)
- - Compile
- - Bug Fixes
- - Retry lots more different types of errors to make multipart
- transfers more reliable
- - Save the config before asking for a token, fixes disappearing
- oauth config
- - Warn the user if –include and –exclude are used together (Ernest
- Borowski)
- - Fix duplicate files (eg on Google drive) causing spurious copies
- - Allow trailing and leading whitespace for passwords (Jason Rose)
- - ncdu: fix crashes on empty directories
- - rcat: fix goroutine leak
- - moveto/copyto: Fix to allow copying to the same name
- - Mount
- - –vfs-cache mode to make writes into mounts more reliable.
- - this requires caching files on the disk (see –cache-dir)
- - As this is a new feature, use with care
- - Use sdnotify to signal systemd the mount is ready (Fabian
- Möller)
- - Check if directory is not empty before mounting (Ernest
- Borowski)
- - Local
- - Add error message for cross file system moves
- - Fix equality check for times
- - Dropbox
- - Rework multipart upload
- - buffer the chunks when uploading large files so they can be
- retried
- - change default chunk size to 48MB now we are buffering them
- in memory
- - retry every error after the first chunk is done successfully
- - Fix error when renaming directories
- - Swift
- - Fix crash on bad authentication
- - Google Drive
- - Add service account support (Tim Cooijmans)
- - S3
- - Make it work properly with Digital Ocean Spaces (Andrew
- Starr-Bochicchio)
- - Fix crash if a bad listing is received
- - Add support for ECS task IAM roles (David Minor)
- - Backblaze B2
- - Fix multipart upload retries
- - Fix –hard-delete to make it work 100% of the time
- - Swift
- - Allow authentication with storage URL and auth key (Giovanni
- Pizzi)
- - Add new fields for swift configuration to support IBM Bluemix
- Swift (Pierre Carlson)
- - Add OS_TENANT_ID and OS_USER_ID to config
- - Allow configs with user id instead of user name
- - Check if swift segments container exists before creating (John
- Leach)
- - Fix memory leak in swift transfers (upstream fix)
- - SFTP
- - Add option to enable the use of aes128-cbc cipher (Jon Fautley)
- - Amazon cloud drive
- - Fix download of large files failing with “Only one auth
- mechanism allowed”
- - crypt
- - Option to encrypt directory names or leave them intact
- - Implement DirChangeNotify (Fabian Möller)
- - onedrive
- - Add option to choose resourceURL during setup of OneDrive
- Business account if more than one is available for user
- v1.38 - 2017-09-30
- - New backends
- - Azure Blob Storage (thanks Andrei Dragomir)
- - Box
- - Onedrive for Business (thanks Oliver Heyme)
- - QingStor from QingCloud (thanks wuyu)
- - New commands
- - rcat - read from standard input and stream upload
- - tree - shows a nicely formatted recursive listing
- - cryptdecode - decode crypted file names (thanks ishuah)
- - config show - print the config file
- - config file - print the config file location
- - New Features
- - Empty directories are deleted on sync
- - dedupe - implement merging of duplicate directories
- - check and cryptcheck made more consistent and use less memory
- - cleanup for remaining remotes (thanks ishuah)
- - --immutable for ensuring that files don’t change (thanks Jacob
- McNamee)
- - --user-agent option (thanks Alex McGrath Kraak)
- - --disable flag to disable optional features
- - --bind flag for choosing the local addr on outgoing connections
- - Support for zsh auto-completion (thanks bpicode)
- - Stop normalizing file names but do a normalized compare in sync
- - Compile
- - Update to using go1.9 as the default go version
- - Remove snapd build due to maintenance problems
- - Bug Fixes
- - Improve retriable error detection which makes multipart uploads
- better
- - Make check obey --ignore-size
- - Fix bwlimit toggle in conjunction with schedules (thanks
- cbruegg)
- - config ensures newly written config is on the same mount
- - Local
- - Revert to copy when moving file across file system boundaries
- - --skip-links to suppress symlink warnings (thanks Zhiming Wang)
- - Mount
- - Re-use rcat internals to support uploads from all remotes
- - Dropbox
- - Fix “entry doesn’t belong in directory” error
- - Stop using deprecated API methods
- - Swift
- - Fix server side copy to empty container with --fast-list
- - Google Drive
- - Change the default for --drive-use-trash to true
- - S3
- - Set session token when using STS (thanks Girish Ramakrishnan)
- - Glacier docs and error messages (thanks Jan Varho)
- - Read 1000 (not 1024) items in dir listings to fix Wasabi
- - Backblaze B2
- - Fix SHA1 mismatch when downloading files with no SHA1
- - Calculate missing hashes on the fly instead of spooling
- - --b2-hard-delete to permanently delete (not hide) files (thanks
- John Papandriopoulos)
- - Hubic
- - Fix creating containers - no longer have to use the default
- container
- - Swift
- - Optionally configure from a standard set of OpenStack
- environment vars
- - Add endpoint_type config
- - Google Cloud Storage
- - Fix bucket creation to work with limited permission users
- - SFTP
- - Implement connection pooling for multiple ssh connections
- - Limit new connections per second
- - Add support for MD5 and SHA1 hashes where available (thanks
- Christian Brüggemann)
- - HTTP
- - Fix URL encoding issues
- - Fix directories with : in
- - Fix panic with URL encoded content
- v1.37 - 2017-07-22
- - New backends
- - FTP - thanks to Antonio Messina
- - HTTP - thanks to Vasiliy Tolstov
- - New commands
- - rclone ncdu - for exploring a remote with a text based user
- interface.
- - rclone lsjson - for listing with a machine readable output
- - rclone dbhashsum - to show Dropbox style hashes of files (local
- or Dropbox)
- - New Features
- - Implement –fast-list flag
- - This allows remotes to list recursively if they can
- - This uses less transactions (important if you pay for them)
- - This may or may not be quicker
- - This will use more memory as it has to hold the listing in
- memory
- - –old-sync-method deprecated - the remaining uses are covered
- by –fast-list
- - This involved a major re-write of all the listing code
- - Add –tpslimit and –tpslimit-burst to limit transactions per
- second
- - this is useful in conjuction with rclone mount to limit
- external apps
- - Add –stats-log-level so can see –stats without -v
- - Print password prompts to stderr - Hraban Luyat
- - Warn about duplicate files when syncing
- - Oauth improvements
- - allow auth_url and token_url to be set in the config file
- - Print redirection URI if using own credentials.
- - Don’t Mkdir at the start of sync to save transactions
- - Compile
- - Update build to go1.8.3
- - Require go1.6 for building rclone
- - Compile 386 builds with “GO386=387” for maximum compatibility
- - Bug Fixes
- - Fix menu selection when no remotes
- - Config saving reworked to not kill the file if disk gets full
- - Don’t delete remote if name does not change while renaming
- - moveto, copyto: report transfers and checks as per move and copy
- - Local
- - Add –local-no-unicode-normalization flag - Bob Potter
- - Mount
- - Now supported on Windows using cgofuse and WinFsp - thanks to
- Bill Zissimopoulos for much help
- - Compare checksums on upload/download via FUSE
- - Unmount when program ends with SIGINT (Ctrl+C) or SIGTERM -
- Jérôme Vizcaino
- - On read only open of file, make open pending until first read
- - Make –read-only reject modify operations
- - Implement ModTime via FUSE for remotes that support it
- - Allow modTime to be changed even before all writers are closed
- - Fix panic on renames
- - Fix hang on errored upload
- - Crypt
- - Report the name:root as specified by the user
- - Add an “obfuscate” option for filename encryption - Stephen
- Harris
- - Amazon Drive
- - Fix initialization order for token renewer
- - Remove revoked credentials, allow oauth proxy config and update
- docs
- - B2
- - Reduce minimum chunk size to 5MB
- - Drive
- - Add team drive support
- - Reduce bandwidth by adding fields for partial responses - Martin
- Kristensen
- - Implement –drive-shared-with-me flag to view shared with me
- files - Danny Tsai
- - Add –drive-trashed-only to read only the files in the trash
- - Remove obsolete –drive-full-list
- - Add missing seek to start on retries of chunked uploads
- - Fix stats accounting for upload
- - Convert / in names to a unicode equivalent (/)
- - Poll for Google Drive changes when mounted
- - OneDrive
- - Fix the uploading of files with spaces
- - Fix initialization order for token renewer
- - Display speeds accurately when uploading - Yoni Jah
- - Swap to using http://localhost:53682/ as redirect URL - Michael
- Ledin
- - Retry on token expired error, reset upload body on retry - Yoni
- Jah
- - Google Cloud Storage
- - Add ability to specify location and storage class via config and
- command line - thanks gdm85
- - Create container if necessary on server side copy
- - Increase directory listing chunk to 1000 to increase performance
- - Obtain a refresh token for GCS - Steven Lu
- - Yandex
- - Fix the name reported in log messages (was empty)
- - Correct error return for listing empty directory
- - Dropbox
- - Rewritten to use the v2 API
- - Now supports ModTime
- - Can only set by uploading the file again
- - If you uploaded with an old rclone, rclone may upload
- everything again
- - Use --size-only or --checksum to avoid this
- - Now supports the Dropbox content hashing scheme
- - Now supports low level retries
- - S3
- - Work around eventual consistency in bucket creation
- - Create container if necessary on server side copy
- - Add us-east-2 (Ohio) and eu-west-2 (London) S3 regions - Zahiar
- Ahmed
- - Swift, Hubic
- - Fix zero length directory markers showing in the subdirectory
- listing
- - this caused lots of duplicate transfers
- - Fix paged directory listings
- - this caused duplicate directory errors
- - Create container if necessary on server side copy
- - Increase directory listing chunk to 1000 to increase performance
- - Make sensible error if the user forgets the container
- - SFTP
- - Add support for using ssh key files
- - Fix under Windows
- - Fix ssh agent on Windows
- - Adapt to latest version of library - Igor Kharin
- v1.36 - 2017-03-18
- - New Features
- - SFTP remote (Jack Schmidt)
- - Re-implement sync routine to work a directory at a time reducing
- memory usage
- - Logging revamped to be more inline with rsync - now much
- quieter * -v only shows transfers * -vv is for full debug *
- –syslog to log to syslog on capable platforms
- - Implement –backup-dir and –suffix
- - Implement –track-renames (initial implementation by Bjørn Erik
- Pedersen)
- - Add time-based bandwidth limits (Lukas Loesche)
- - rclone cryptcheck: checks integrity of crypt remotes
- - Allow all config file variables and options to be set from
- environment variables
- - Add –buffer-size parameter to control buffer size for copy
- - Make –delete-after the default
- - Add –ignore-checksum flag (fixed by Hisham Zarka)
- - rclone check: Add –download flag to check all the data, not just
- hashes
- - rclone cat: add –head, –tail, –offset, –count and –discard
- - rclone config: when choosing from a list, allow the value to be
- entered too
- - rclone config: allow rename and copy of remotes
- - rclone obscure: for generating encrypted passwords for rclone’s
- config (T.C. Ferguson)
- - Comply with XDG Base Directory specification (Dario Giovannetti)
- - this moves the default location of the config file in a
- backwards compatible way
- - Release changes
- - Ubuntu snap support (Dedsec1)
- - Compile with go 1.8
- - MIPS/Linux big and little endian support
- - Bug Fixes
- - Fix copyto copying things to the wrong place if the destination
- dir didn’t exist
- - Fix parsing of remotes in moveto and copyto
- - Fix –delete-before deleting files on copy
- - Fix –files-from with an empty file copying everything
- - Fix sync: don’t update mod times if –dry-run set
- - Fix MimeType propagation
- - Fix filters to add ** rules to directory rules
- - Local
- - Implement -L, –copy-links flag to allow rclone to follow
- symlinks
- - Open files in write only mode so rclone can write to an rclone
- mount
- - Fix unnormalised unicode causing problems reading directories
- - Fix interaction between -x flag and –max-depth
- - Mount
- - Implement proper directory handling (mkdir, rmdir, renaming)
- - Make include and exclude filters apply to mount
- - Implement read and write async buffers - control with
- –buffer-size
- - Fix fsync on for directories
- - Fix retry on network failure when reading off crypt
- - Crypt
- - Add –crypt-show-mapping to show encrypted file mapping
- - Fix crypt writer getting stuck in a loop
- - IMPORTANT this bug had the potential to cause data
- corruption when
- - reading data from a network based remote and
- - writing to a crypt on Google Drive
- - Use the cryptcheck command to validate your data if you are
- concerned
- - If syncing two crypt remotes, sync the unencrypted remote
- - Amazon Drive
- - Fix panics on Move (rename)
- - Fix panic on token expiry
- - B2
- - Fix inconsistent listings and rclone check
- - Fix uploading empty files with go1.8
- - Constrain memory usage when doing multipart uploads
- - Fix upload url not being refreshed properly
- - Drive
- - Fix Rmdir on directories with trashed files
- - Fix “Ignoring unknown object” when downloading
- - Add –drive-list-chunk
- - Add –drive-skip-gdocs (Károly Oláh)
- - OneDrive
- - Implement Move
- - Fix Copy
- - Fix overwrite detection in Copy
- - Fix waitForJob to parse errors correctly
- - Use token renewer to stop auth errors on long uploads
- - Fix uploading empty files with go1.8
- - Google Cloud Storage
- - Fix depth 1 directory listings
- - Yandex
- - Fix single level directory listing
- - Dropbox
- - Normalise the case for single level directory listings
- - Fix depth 1 listing
- - S3
- - Added ca-central-1 region (Jon Yergatian)
- v1.35 - 2017-01-02
- - New Features
- - moveto and copyto commands for choosing a destination name on
- copy/move
- - rmdirs command to recursively delete empty directories
- - Allow repeated –include/–exclude/–filter options
- - Only show transfer stats on commands which transfer stuff
- - show stats on any command using the --stats flag
- - Allow overlapping directories in move when server side dir move
- is supported
- - Add –stats-unit option - thanks Scott McGillivray
- - Bug Fixes
- - Fix the config file being overwritten when two rclones are
- running
- - Make rclone lsd obey the filters properly
- - Fix compilation on mips
- - Fix not transferring files that don’t differ in size
- - Fix panic on nil retry/fatal error
- - Mount
- - Retry reads on error - should help with reliability a lot
- - Report the modification times for directories from the remote
- - Add bandwidth accounting and limiting (fixes –bwlimit)
- - If –stats provided will show stats and which files are
- transferring
- - Support R/W files if truncate is set.
- - Implement statfs interface so df works
- - Note that write is now supported on Amazon Drive
- - Report number of blocks in a file - thanks Stefan Breunig
- - Crypt
- - Prevent the user pointing crypt at itself
- - Fix failed to authenticate decrypted block errors
- - these will now return the underlying unexpected EOF instead
- - Amazon Drive
- - Add support for server side move and directory move - thanks
- Stefan Breunig
- - Fix nil pointer deref on size attribute
- - B2
- - Use new prefix and delimiter parameters in directory listings
- - This makes –max-depth 1 dir listings as used in mount much
- faster
- - Reauth the account while doing uploads too - should help with
- token expiry
- - Drive
- - Make DirMove more efficient and complain about moving the root
- - Create destination directory on Move()
- v1.34 - 2016-11-06
- - New Features
- - Stop single file and --files-from operations iterating through
- the source bucket.
- - Stop removing failed upload to cloud storage remotes
- - Make ContentType be preserved for cloud to cloud copies
- - Add support to toggle bandwidth limits via SIGUSR2 - thanks
- Marco Paganini
- - rclone check shows count of hashes that couldn’t be checked
- - rclone listremotes command
- - Support linux/arm64 build - thanks Fredrik Fornwall
- - Remove Authorization: lines from --dump-headers output
- - Bug Fixes
- - Ignore files with control characters in the names
- - Fix rclone move command
- - Delete src files which already existed in dst
- - Fix deletion of src file when dst file older
- - Fix rclone check on crypted file systems
- - Make failed uploads not count as “Transferred”
- - Make sure high level retries show with -q
- - Use a vendor directory with godep for repeatable builds
- - rclone mount - FUSE
- - Implement FUSE mount options
- - --no-modtime, --debug-fuse, --read-only, --allow-non-empty,
- --allow-root, --allow-other
- - --default-permissions, --write-back-cache, --max-read-ahead,
- --umask, --uid, --gid
- - Add --dir-cache-time to control caching of directory entries
- - Implement seek for files opened for read (useful for video
- players)
- - with -no-seek flag to disable
- - Fix crash on 32 bit ARM (alignment of 64 bit counter)
- - …and many more internal fixes and improvements!
- - Crypt
- - Don’t show encrypted password in configurator to stop confusion
- - Amazon Drive
- - New wait for upload option --acd-upload-wait-per-gb
- - upload timeouts scale by file size and can be disabled
- - Add 502 Bad Gateway to list of errors we retry
- - Fix overwriting a file with a zero length file
- - Fix ACD file size warning limit - thanks Felix Bünemann
- - Local
- - Unix: implement -x/--one-file-system to stay on a single file
- system
- - thanks Durval Menezes and Luiz Carlos Rumbelsperger Viana
- - Windows: ignore the symlink bit on files
- - Windows: Ignore directory based junction points
- - B2
- - Make sure each upload has at least one upload slot - fixes
- strange upload stats
- - Fix uploads when using crypt
- - Fix download of large files (sha1 mismatch)
- - Return error when we try to create a bucket which someone else
- owns
- - Update B2 docs with Data usage, and Crypt section - thanks
- Tomasz Mazur
- - S3
- - Command line and config file support for
- - Setting/overriding ACL - thanks Radek Senfeld
- - Setting storage class - thanks Asko Tamm
- - Drive
- - Make exponential backoff work exactly as per Google
- specification
- - add .epub, .odp and .tsv as export formats.
- - Swift
- - Don’t read metadata for directory marker objects
- v1.33 - 2016-08-24
- - New Features
- - Implement encryption
- - data encrypted in NACL secretbox format
- - with optional file name encryption
- - New commands
- - rclone mount - implements FUSE mounting of remotes
- (EXPERIMENTAL)
- - works on Linux, FreeBSD and OS X (need testers for the
- last 2!)
- - rclone cat - outputs remote file or files to the terminal
- - rclone genautocomplete - command to make a bash completion
- script for rclone
- - Editing a remote using rclone config now goes through the wizard
- - Compile with go 1.7 - this fixes rclone on macOS Sierra and on
- 386 processors
- - Use cobra for sub commands and docs generation
- - drive
- - Document how to make your own client_id
- - s3
- - User-configurable Amazon S3 ACL (thanks Radek Šenfeld)
- - b2
- - Fix stats accounting for upload - no more jumping to 100% done
- - On cleanup delete hide marker if it is the current file
- - New B2 API endpoint (thanks Per Cederberg)
- - Set maximum backoff to 5 Minutes
- - onedrive
- - Fix URL escaping in file names - eg uploading files with + in
- them.
- - amazon cloud drive
- - Fix token expiry during large uploads
- - Work around 408 REQUEST_TIMEOUT and 504 GATEWAY_TIMEOUT errors
- - local
- - Fix filenames with invalid UTF-8 not being uploaded
- - Fix problem with some UTF-8 characters on OS X
- v1.32 - 2016-07-13
- - Backblaze B2
- - Fix upload of files large files not in root
- v1.31 - 2016-07-13
- - New Features
- - Reduce memory on sync by about 50%
- - Implement –no-traverse flag to stop copy traversing the
- destination remote.
- - This can be used to reduce memory usage down to the smallest
- possible.
- - Useful to copy a small number of files into a large
- destination folder.
- - Implement cleanup command for emptying trash / removing old
- versions of files
- - Currently B2 only
- - Single file handling improved
- - Now copied with –files-from
- - Automatically sets –no-traverse when copying a single file
- - Info on using installing with ansible - thanks Stefan Weichinger
- - Implement –no-update-modtime flag to stop rclone fixing the
- remote modified times.
- - Bug Fixes
- - Fix move command - stop it running for overlapping Fses - this
- was causing data loss.
- - Local
- - Fix incomplete hashes - this was causing problems for B2.
- - Amazon Drive
- - Rename Amazon Cloud Drive to Amazon Drive - no changes to config
- file needed.
- - Swift
- - Add support for non-default project domain - thanks Antonio
- Messina.
- - S3
- - Add instructions on how to use rclone with minio.
- - Add ap-northeast-2 (Seoul) and ap-south-1 (Mumbai) regions.
- - Skip setting the modified time for objects > 5GB as it isn’t
- possible.
- - Backblaze B2
- - Add –b2-versions flag so old versions can be listed and
- retreived.
- - Treat 403 errors (eg cap exceeded) as fatal.
- - Implement cleanup command for deleting old file versions.
- - Make error handling compliant with B2 integrations notes.
- - Fix handling of token expiry.
- - Implement –b2-test-mode to set X-Bz-Test-Mode header.
- - Set cutoff for chunked upload to 200MB as per B2 guidelines.
- - Make upload multi-threaded.
- - Dropbox
- - Don’t retry 461 errors.
- v1.30 - 2016-06-18
- - New Features
- - Directory listing code reworked for more features and better
- error reporting (thanks to Klaus Post for help). This enables
- - Directory include filtering for efficiency
- - –max-depth parameter
- - Better error reporting
- - More to come
- - Retry more errors
- - Add –ignore-size flag - for uploading images to onedrive
- - Log -v output to stdout by default
- - Display the transfer stats in more human readable form
- - Make 0 size files specifiable with --max-size 0b
- - Add b suffix so we can specify bytes in –bwlimit, –min-size etc
- - Use “password:” instead of “password>” prompt - thanks Klaus
- Post and Leigh Klotz
- - Bug Fixes
- - Fix retry doing one too many retries
- - Local
- - Fix problems with OS X and UTF-8 characters
- - Amazon Drive
- - Check a file exists before uploading to help with 408 Conflict
- errors
- - Reauth on 401 errors - this has been causing a lot of problems
- - Work around spurious 403 errors
- - Restart directory listings on error
- - Google Drive
- - Check a file exists before uploading to help with duplicates
- - Fix retry of multipart uploads
- - Backblaze B2
- - Implement large file uploading
- - S3
- - Add AES256 server-side encryption for - thanks Justin R. Wilson
- - Google Cloud Storage
- - Make sure we don’t use conflicting content types on upload
- - Add service account support - thanks Michal Witkowski
- - Swift
- - Add auth version parameter
- - Add domain option for openstack (v3 auth) - thanks Fabian Ruff
- v1.29 - 2016-04-18
- - New Features
- - Implement -I, --ignore-times for unconditional upload
- - Improve dedupecommand
- - Now removes identical copies without asking
- - Now obeys --dry-run
- - Implement --dedupe-mode for non interactive running
- - --dedupe-mode interactive - interactive the default.
- - --dedupe-mode skip - removes identical files then skips
- anything left.
- - --dedupe-mode first - removes identical files then keeps
- the first one.
- - --dedupe-mode newest - removes identical files then
- keeps the newest one.
- - --dedupe-mode oldest - removes identical files then
- keeps the oldest one.
- - --dedupe-mode rename - removes identical files then
- renames the rest to be different.
- - Bug fixes
- - Make rclone check obey the --size-only flag.
- - Use “application/octet-stream” if discovered mime type is
- invalid.
- - Fix missing “quit” option when there are no remotes.
- - Google Drive
- - Increase default chunk size to 8 MB - increases upload speed of
- big files
- - Speed up directory listings and make more reliable
- - Add missing retries for Move and DirMove - increases reliability
- - Preserve mime type on file update
- - Backblaze B2
- - Enable mod time syncing
- - This means that B2 will now check modification times
- - It will upload new files to update the modification times
- - (there isn’t an API to just set the mod time.)
- - If you want the old behaviour use --size-only.
- - Update API to new version
- - Fix parsing of mod time when not in metadata
- - Swift/Hubic
- - Don’t return an MD5SUM for static large objects
- - S3
- - Fix uploading files bigger than 50GB
- v1.28 - 2016-03-01
- - New Features
- - Configuration file encryption - thanks Klaus Post
- - Improve rclone config adding more help and making it easier to
- understand
- - Implement -u/--update so creation times can be used on all
- remotes
- - Implement --low-level-retries flag
- - Optionally disable gzip compression on downloads with
- --no-gzip-encoding
- - Bug fixes
- - Don’t make directories if --dry-run set
- - Fix and document the move command
- - Fix redirecting stderr on unix-like OSes when using --log-file
- - Fix delete command to wait until all finished - fixes missing
- deletes.
- - Backblaze B2
- - Use one upload URL per go routine fixes
- more than one upload using auth token
- - Add pacing, retries and reauthentication - fixes token expiry
- problems
- - Upload without using a temporary file from local (and remotes
- which support SHA1)
- - Fix reading metadata for all files when it shouldn’t have been
- - Drive
- - Fix listing drive documents at root
- - Disable copy and move for Google docs
- - Swift
- - Fix uploading of chunked files with non ASCII characters
- - Allow setting of storage_url in the config - thanks Xavier Lucas
- - S3
- - Allow IAM role and credentials from environment variables -
- thanks Brian Stengaard
- - Allow low privilege users to use S3 (check if directory exists
- during Mkdir) - thanks Jakub Gedeon
- - Amazon Drive
- - Retry on more things to make directory listings more reliable
- v1.27 - 2016-01-31
- - New Features
- - Easier headless configuration with rclone authorize
- - Add support for multiple hash types - we now check SHA1 as well
- as MD5 hashes.
- - delete command which does obey the filters (unlike purge)
- - dedupe command to deduplicate a remote. Useful with Google
- Drive.
- - Add --ignore-existing flag to skip all files that exist on
- destination.
- - Add --delete-before, --delete-during, --delete-after flags.
- - Add --memprofile flag to debug memory use.
- - Warn the user about files with same name but different case
- - Make --include rules add their implict exclude * at the end of
- the filter list
- - Deprecate compiling with go1.3
- - Amazon Drive
- - Fix download of files > 10 GB
- - Fix directory traversal (“Next token is expired”) for large
- directory listings
- - Remove 409 conflict from error codes we will retry - stops very
- long pauses
- - Backblaze B2
- - SHA1 hashes now checked by rclone core
- - Drive
- - Add --drive-auth-owner-only to only consider files owned by the
- user - thanks Björn Harrtell
- - Export Google documents
- - Dropbox
- - Make file exclusion error controllable with -q
- - Swift
- - Fix upload from unprivileged user.
- - S3
- - Fix updating of mod times of files with + in.
- - Local
- - Add local file system option to disable UNC on Windows.
- v1.26 - 2016-01-02
- - New Features
- - Yandex storage backend - thank you Dmitry Burdeev (“dibu”)
- - Implement Backblaze B2 storage backend
- - Add –min-age and –max-age flags - thank you Adriano Aurélio
- Meirelles
- - Make ls/lsl/md5sum/size/check obey includes and excludes
- - Fixes
- - Fix crash in http logging
- - Upload releases to github too
- - Swift
- - Fix sync for chunked files
- - OneDrive
- - Re-enable server side copy
- - Don’t mask HTTP error codes with JSON decode error
- - S3
- - Fix corrupting Content-Type on mod time update (thanks Joseph
- Spurrier)
- v1.25 - 2015-11-14
- - New features
- - Implement Hubic storage system
- - Fixes
- - Fix deletion of some excluded files without –delete-excluded
- - This could have deleted files unexpectedly on sync
- - Always check first with --dry-run!
- - Swift
- - Stop SetModTime losing metadata (eg X-Object-Manifest)
- - This could have caused data loss for files > 5GB in size
- - Use ContentType from Object to avoid lookups in listings
- - OneDrive
- - disable server side copy as it seems to be broken at Microsoft
- v1.24 - 2015-11-07
- - New features
- - Add support for Microsoft OneDrive
- - Add --no-check-certificate option to disable server certificate
- verification
- - Add async readahead buffer for faster transfer of big files
- - Fixes
- - Allow spaces in remotes and check remote names for validity at
- creation time
- - Allow ‘&’ and disallow ‘:’ in Windows filenames.
- - Swift
- - Ignore directory marker objects where appropriate - allows
- working with Hubic
- - Don’t delete the container if fs wasn’t at root
- - S3
- - Don’t delete the bucket if fs wasn’t at root
- - Google Cloud Storage
- - Don’t delete the bucket if fs wasn’t at root
- v1.23 - 2015-10-03
- - New features
- - Implement rclone size for measuring remotes
- - Fixes
- - Fix headless config for drive and gcs
- - Tell the user they should try again if the webserver method
- failed
- - Improve output of --dump-headers
- - S3
- - Allow anonymous access to public buckets
- - Swift
- - Stop chunked operations logging “Failed to read info: Object Not
- Found”
- - Use Content-Length on uploads for extra reliability
- v1.22 - 2015-09-28
- - Implement rsync like include and exclude flags
- - swift
- - Support files > 5GB - thanks Sergey Tolmachev
- v1.21 - 2015-09-22
- - New features
- - Display individual transfer progress
- - Make lsl output times in localtime
- - Fixes
- - Fix allowing user to override credentials again in Drive, GCS
- and ACD
- - Amazon Drive
- - Implement compliant pacing scheme
- - Google Drive
- - Make directory reads concurrent for increased speed.
- v1.20 - 2015-09-15
- - New features
- - Amazon Drive support
- - Oauth support redone - fix many bugs and improve usability
- - Use “golang.org/x/oauth2” as oauth libary of choice
- - Improve oauth usability for smoother initial signup
- - drive, googlecloudstorage: optionally use auto config for
- the oauth token
- - Implement –dump-headers and –dump-bodies debug flags
- - Show multiple matched commands if abbreviation too short
- - Implement server side move where possible
- - local
- - Always use UNC paths internally on Windows - fixes a lot of bugs
- - dropbox
- - force use of our custom transport which makes timeouts work
- - Thanks to Klaus Post for lots of help with this release
- v1.19 - 2015-08-28
- - New features
- - Server side copies for s3/swift/drive/dropbox/gcs
- - Move command - uses server side copies if it can
- - Implement –retries flag - tries 3 times by default
- - Build for plan9/amd64 and solaris/amd64 too
- - Fixes
- - Make a current version download with a fixed URL for scripting
- - Ignore rmdir in limited fs rather than throwing error
- - dropbox
- - Increase chunk size to improve upload speeds massively
- - Issue an error message when trying to upload bad file name
- v1.18 - 2015-08-17
- - drive
- - Add --drive-use-trash flag so rclone trashes instead of deletes
- - Add “Forbidden to download” message for files with no
- downloadURL
- - dropbox
- - Remove datastore
- - This was deprecated and it caused a lot of problems
- - Modification times and MD5SUMs no longer stored
- - Fix uploading files > 2GB
- - s3
- - use official AWS SDK from github.com/aws/aws-sdk-go
- - NB will most likely require you to delete and recreate remote
- - enable multipart upload which enables files > 5GB
- - tested with Ceph / RadosGW / S3 emulation
- - many thanks to Sam Liston and Brian Haymore at the Utah Center
- for High Performance Computing for a Ceph test account
- - misc
- - Show errors when reading the config file
- - Do not print stats in quiet mode - thanks Leonid Shalupov
- - Add FAQ
- - Fix created directories not obeying umask
- - Linux installation instructions - thanks Shimon Doodkin
- v1.17 - 2015-06-14
- - dropbox: fix case insensitivity issues - thanks Leonid Shalupov
- v1.16 - 2015-06-09
- - Fix uploading big files which was causing timeouts or panics
- - Don’t check md5sum after download with –size-only
- v1.15 - 2015-06-06
- - Add –checksum flag to only discard transfers by MD5SUM - thanks Alex
- Couper
- - Implement –size-only flag to sync on size not checksum & modtime
- - Expand docs and remove duplicated information
- - Document rclone’s limitations with directories
- - dropbox: update docs about case insensitivity
- v1.14 - 2015-05-21
- - local: fix encoding of non utf-8 file names - fixes a duplicate file
- problem
- - drive: docs about rate limiting
- - google cloud storage: Fix compile after API change in
- “google.golang.org/api/storage/v1”
- v1.13 - 2015-05-10
- - Revise documentation (especially sync)
- - Implement –timeout and –conntimeout
- - s3: ignore etags from multipart uploads which aren’t md5sums
- v1.12 - 2015-03-15
- - drive: Use chunked upload for files above a certain size
- - drive: add –drive-chunk-size and –drive-upload-cutoff parameters
- - drive: switch to insert from update when a failed copy deletes the
- upload
- - core: Log duplicate files if they are detected
- v1.11 - 2015-03-04
- - swift: add region parameter
- - drive: fix crash on failed to update remote mtime
- - In remote paths, change native directory separators to /
- - Add synchronization to ls/lsl/lsd output to stop corruptions
- - Ensure all stats/log messages to go stderr
- - Add –log-file flag to log everything (including panics) to file
- - Make it possible to disable stats printing with –stats=0
- - Implement –bwlimit to limit data transfer bandwidth
- v1.10 - 2015-02-12
- - s3: list an unlimited number of items
- - Fix getting stuck in the configurator
- v1.09 - 2015-02-07
- - windows: Stop drive letters (eg C:) getting mixed up with remotes
- (eg drive:)
- - local: Fix directory separators on Windows
- - drive: fix rate limit exceeded errors
- v1.08 - 2015-02-04
- - drive: fix subdirectory listing to not list entire drive
- - drive: Fix SetModTime
- - dropbox: adapt code to recent library changes
- v1.07 - 2014-12-23
- - google cloud storage: fix memory leak
- v1.06 - 2014-12-12
- - Fix “Couldn’t find home directory” on OSX
- - swift: Add tenant parameter
- - Use new location of Google API packages
- v1.05 - 2014-08-09
- - Improved tests and consequently lots of minor fixes
- - core: Fix race detected by go race detector
- - core: Fixes after running errcheck
- - drive: reset root directory on Rmdir and Purge
- - fs: Document that Purger returns error on empty directory, test and
- fix
- - google cloud storage: fix ListDir on subdirectory
- - google cloud storage: re-read metadata in SetModTime
- - s3: make reading metadata more reliable to work around eventual
- consistency problems
- - s3: strip trailing / from ListDir()
- - swift: return directories without / in ListDir
- v1.04 - 2014-07-21
- - google cloud storage: Fix crash on Update
- v1.03 - 2014-07-20
- - swift, s3, dropbox: fix updated files being marked as corrupted
- - Make compile with go 1.1 again
- v1.02 - 2014-07-19
- - Implement Dropbox remote
- - Implement Google Cloud Storage remote
- - Verify Md5sums and Sizes after copies
- - Remove times from “ls” command - lists sizes only
- - Add add “lsl” - lists times and sizes
- - Add “md5sum” command
- v1.01 - 2014-07-04
- - drive: fix transfer of big files using up lots of memory
- v1.00 - 2014-07-03
- - drive: fix whole second dates
- v0.99 - 2014-06-26
- - Fix –dry-run not working
- - Make compatible with go 1.1
- v0.98 - 2014-05-30
- - s3: Treat missing Content-Length as 0 for some ceph installations
- - rclonetest: add file with a space in
- v0.97 - 2014-05-05
- - Implement copying of single files
- - s3 & swift: support paths inside containers/buckets
- v0.96 - 2014-04-24
- - drive: Fix multiple files of same name being created
- - drive: Use o.Update and fs.Put to optimise transfers
- - Add version number, -V and –version
- v0.95 - 2014-03-28
- - rclone.org: website, docs and graphics
- - drive: fix path parsing
- v0.94 - 2014-03-27
- - Change remote format one last time
- - GNU style flags
- v0.93 - 2014-03-16
- - drive: store token in config file
- - cross compile other versions
- - set strict permissions on config file
- v0.92 - 2014-03-15
- - Config fixes and –config option
- v0.91 - 2014-03-15
- - Make config file
- v0.90 - 2013-06-27
- - Project named rclone
- v0.00 - 2012-11-18
- - Project started
- BUGS AND LIMITATIONS
- Limitations
- Directory timestamps aren’t preserved
- Rclone doesn’t currently preserve the timestamps of directories. This is
- because rclone only really considers objects when syncing.
- Rclone struggles with millions of files in a directory
- Currently rclone loads each directory entirely into memory before using
- it. Since each Rclone object takes 0.5k-1k of memory this can take a
- very long time and use an extremely large amount of memory.
- Millions of files in a directory tend caused by software writing cloud
- storage (eg S3 buckets).
- Bucket based remotes and folders
- Bucket based remotes (eg S3/GCS/Swift/B2) do not have a concept of
- directories. Rclone therefore cannot create directories in them which
- means that empty directories on a bucket based remote will tend to
- disappear.
- Some software creates empty keys ending in / as directory markers.
- Rclone doesn’t do this as it potentially creates more objects and costs
- more. It may do in future (probably with a flag).
- Bugs
- Bugs are stored in rclone’s GitHub project:
- - Reported bugs
- - Known issues
- Frequently Asked Questions
- Do all cloud storage systems support all rclone commands
- Yes they do. All the rclone commands (eg sync, copy etc) will work on
- all the remote storage systems.
- Can I copy the config from one machine to another
- Sure! Rclone stores all of its config in a single file. If you want to
- find this file, run rclone config file which will tell you where it is.
- See the remote setup docs for more info.
- How do I configure rclone on a remote / headless box with no browser?
- This has now been documented in its own remote setup page.
- Can rclone sync directly from drive to s3
- Rclone can sync between two remote cloud storage systems just fine.
- Note that it effectively downloads the file and uploads it again, so the
- node running rclone would need to have lots of bandwidth.
- The syncs would be incremental (on a file by file basis).
- Eg
- rclone sync drive:Folder s3:bucket
- Using rclone from multiple locations at the same time
- You can use rclone from multiple places at the same time if you choose
- different subdirectory for the output, eg
- Server A> rclone sync /tmp/whatever remote:ServerA
- Server B> rclone sync /tmp/whatever remote:ServerB
- If you sync to the same directory then you should use rclone copy
- otherwise the two rclones may delete each others files, eg
- Server A> rclone copy /tmp/whatever remote:Backup
- Server B> rclone copy /tmp/whatever remote:Backup
- The file names you upload from Server A and Server B should be different
- in this case, otherwise some file systems (eg Drive) may make
- duplicates.
- Why doesn’t rclone support partial transfers / binary diffs like rsync?
- Rclone stores each file you transfer as a native object on the remote
- cloud storage system. This means that you can see the files you upload
- as expected using alternative access methods (eg using the Google Drive
- web interface). There is a 1:1 mapping between files on your hard disk
- and objects created in the cloud storage system.
- Cloud storage systems (at least none I’ve come across yet) don’t support
- partially uploading an object. You can’t take an existing object, and
- change some bytes in the middle of it.
- It would be possible to make a sync system which stored binary diffs
- instead of whole objects like rclone does, but that would break the 1:1
- mapping of files on your hard disk to objects in the remote cloud
- storage system.
- All the cloud storage systems support partial downloads of content, so
- it would be possible to make partial downloads work. However to make
- this work efficiently this would require storing a significant amount of
- metadata, which breaks the desired 1:1 mapping of files to objects.
- Can rclone do bi-directional sync?
- No, not at present. rclone only does uni-directional sync from A -> B.
- It may do in the future though since it has all the primitives - it just
- requires writing the algorithm to do it.
- Can I use rclone with an HTTP proxy?
- Yes. rclone will follow the standard environment variables for proxies,
- similar to cURL and other programs.
- In general the variables are called http_proxy (for services reached
- over http) and https_proxy (for services reached over https). Most
- public services will be using https, but you may wish to set both.
- The content of the variable is protocol://server:port. The protocol
- value is the one used to talk to the proxy server, itself, and is
- commonly either http or socks5.
- Slightly annoyingly, there is no _standard_ for the name; some
- applications may use http_proxy but another one HTTP_PROXY. The Go
- libraries used by rclone will try both variations, but you may wish to
- set all possibilities. So, on Linux, you may end up with code similar to
- export http_proxy=http://proxyserver:12345
- export https_proxy=$http_proxy
- export HTTP_PROXY=$http_proxy
- export HTTPS_PROXY=$http_proxy
- The NO_PROXY allows you to disable the proxy for specific hosts. Hosts
- must be comma separated, and can contain domains or parts. For instance
- “foo.com” also matches “bar.foo.com”.
- e.g.
- export no_proxy=localhost,127.0.0.0/8,my.host.name
- export NO_PROXY=$no_proxy
- Note that the ftp backend does not support ftp_proxy yet.
- Rclone gives x509: failed to load system roots and no roots provided error
- This means that rclone can’t file the SSL root certificates. Likely you
- are running rclone on a NAS with a cut-down Linux OS, or possibly on
- Solaris.
- Rclone (via the Go runtime) tries to load the root certificates from
- these places on Linux.
- "/etc/ssl/certs/ca-certificates.crt", // Debian/Ubuntu/Gentoo etc.
- "/etc/pki/tls/certs/ca-bundle.crt", // Fedora/RHEL
- "/etc/ssl/ca-bundle.pem", // OpenSUSE
- "/etc/pki/tls/cacert.pem", // OpenELEC
- So doing something like this should fix the problem. It also sets the
- time which is important for SSL to work properly.
- mkdir -p /etc/ssl/certs/
- curl -o /etc/ssl/certs/ca-certificates.crt https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt
- ntpclient -s -h pool.ntp.org
- The two environment variables SSL_CERT_FILE and SSL_CERT_DIR, mentioned
- in the x509 package, provide an additional way to provide the SSL root
- certificates.
- Note that you may need to add the --insecure option to the curl command
- line if it doesn’t work without.
- curl --insecure -o /etc/ssl/certs/ca-certificates.crt https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt
- Rclone gives Failed to load config file: function not implemented error
- Likely this means that you are running rclone on Linux version not
- supported by the go runtime, ie earlier than version 2.6.23.
- See the system requirements section in the go install docs for full
- details.
- All my uploaded docx/xlsx/pptx files appear as archive/zip
- This is caused by uploading these files from a Windows computer which
- hasn’t got the Microsoft Office suite installed. The easiest way to fix
- is to install the Word viewer and the Microsoft Office Compatibility
- Pack for Word, Excel, and PowerPoint 2007 and later versions’ file
- formats
- tcp lookup some.domain.com no such host
- This happens when rclone cannot resolve a domain. Please check that your
- DNS setup is generally working, e.g.
- # both should print a long list of possible IP addresses
- dig www.googleapis.com # resolve using your default DNS
- dig www.googleapis.com @8.8.8.8 # resolve with Google's DNS server
- If you are using systemd-resolved (default on Arch Linux), ensure it is
- at version 233 or higher. Previous releases contain a bug which causes
- not all domains to be resolved properly.
- Additionally with the GODEBUG=netdns= environment variable the Go
- resolver decision can be influenced. This also allows to resolve certain
- issues with DNS resolution. See the name resolution section in the go
- docs.
- The total size reported in the stats for a sync is wrong and keeps changing
- It is likely you have more than 10,000 files that need to be synced. By
- default rclone only gets 10,000 files ahead in a sync so as not to use
- up too much memory. You can change this default with the –max-backlog
- flag.
- Rclone is using too much memory or appears to have a memory leak
- Rclone is written in Go which uses a garbage collector. The default
- settings for the garbage collector mean that it runs when the heap size
- has doubled.
- However it is possible to tune the garbage collector to use less memory
- by setting GOGC to a lower value, say export GOGC=20. This will make the
- garbage collector work harder, reducing memory size at the expense of
- CPU usage.
- The most common cause of rclone using lots of memory is a single
- directory with thousands or millions of files in. Rclone has to load
- this entirely into memory as rclone objects. Each rclone object takes
- 0.5k-1k of memory.
- License
- This is free software under the terms of MIT the license (check the
- COPYING file included with the source code).
- Copyright (C) 2019 by Nick Craig-Wood https://www.craig-wood.com/nick/
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- Authors
- - Nick Craig-Wood nick@craig-wood.com
- Contributors
- - Alex Couper amcouper@gmail.com
- - Leonid Shalupov leonid@shalupov.com shalupov@diverse.org.ru
- - Shimon Doodkin helpmepro1@gmail.com
- - Colin Nicholson colin@colinn.com
- - Klaus Post klauspost@gmail.com
- - Sergey Tolmachev tolsi.ru@gmail.com
- - Adriano Aurélio Meirelles adriano@atinge.com
- - C. Bess cbess@users.noreply.github.com
- - Dmitry Burdeev dibu28@gmail.com
- - Joseph Spurrier github@josephspurrier.com
- - Björn Harrtell bjorn@wololo.org
- - Xavier Lucas xavier.lucas@corp.ovh.com
- - Werner Beroux werner@beroux.com
- - Brian Stengaard brian@stengaard.eu
- - Jakub Gedeon jgedeon@sofi.com
- - Jim Tittsler jwt@onjapan.net
- - Michal Witkowski michal@improbable.io
- - Fabian Ruff fabian.ruff@sap.com
- - Leigh Klotz klotz@quixey.com
- - Romain Lapray lapray.romain@gmail.com
- - Justin R. Wilson jrw972@gmail.com
- - Antonio Messina antonio.s.messina@gmail.com
- - Stefan G. Weichinger office@oops.co.at
- - Per Cederberg cederberg@gmail.com
- - Radek Šenfeld rush@logic.cz
- - Fredrik Fornwall fredrik@fornwall.net
- - Asko Tamm asko@deekit.net
- - xor-zz xor@gstocco.com
- - Tomasz Mazur tmazur90@gmail.com
- - Marco Paganini paganini@paganini.net
- - Felix Bünemann buenemann@louis.info
- - Durval Menezes jmrclone@durval.com
- - Luiz Carlos Rumbelsperger Viana maxd13_luiz_carlos@hotmail.com
- - Stefan Breunig stefan-github@yrden.de
- - Alishan Ladhani ali-l@users.noreply.github.com
- - 0xJAKE 0xJAKE@users.noreply.github.com
- - Thibault Molleman thibaultmol@users.noreply.github.com
- - Scott McGillivray scott.mcgillivray@gmail.com
- - Bjørn Erik Pedersen bjorn.erik.pedersen@gmail.com
- - Lukas Loesche lukas@mesosphere.io
- - emyarod allllaboutyou@gmail.com
- - T.C. Ferguson tcf909@gmail.com
- - Brandur brandur@mutelight.org
- - Dario Giovannetti dev@dariogiovannetti.net
- - Károly Oláh okaresz@aol.com
- - Jon Yergatian jon@macfanatic.ca
- - Jack Schmidt github@mowsey.org
- - Dedsec1 Dedsec1@users.noreply.github.com
- - Hisham Zarka hzarka@gmail.com
- - Jérôme Vizcaino jerome.vizcaino@gmail.com
- - Mike Tesch mjt6129@rit.edu
- - Marvin Watson marvwatson@users.noreply.github.com
- - Danny Tsai danny8376@gmail.com
- - Yoni Jah yonjah+git@gmail.com yonjah+github@gmail.com
- - Stephen Harris github@spuddy.org sweharris@users.noreply.github.com
- - Ihor Dvoretskyi ihor.dvoretskyi@gmail.com
- - Jon Craton jncraton@gmail.com
- - Hraban Luyat hraban@0brg.net
- - Michael Ledin mledin89@gmail.com
- - Martin Kristensen me@azgul.com
- - Too Much IO toomuchio@users.noreply.github.com
- - Anisse Astier anisse@astier.eu
- - Zahiar Ahmed zahiar@live.com
- - Igor Kharin igorkharin@gmail.com
- - Bill Zissimopoulos billziss@navimatics.com
- - Bob Potter bobby.potter@gmail.com
- - Steven Lu tacticalazn@gmail.com
- - Sjur Fredriksen sjurtf@ifi.uio.no
- - Ruwbin hubus12345@gmail.com
- - Fabian Möller fabianm88@gmail.com f.moeller@nynex.de
- - Edward Q. Bridges github@eqbridges.com
- - Vasiliy Tolstov v.tolstov@selfip.ru
- - Harshavardhana harsha@minio.io
- - sainaen sainaen@gmail.com
- - gdm85 gdm85@users.noreply.github.com
- - Yaroslav Halchenko debian@onerussian.com
- - John Papandriopoulos jpap@users.noreply.github.com
- - Zhiming Wang zmwangx@gmail.com
- - Andy Pilate cubox@cubox.me
- - Oliver Heyme olihey@googlemail.com olihey@users.noreply.github.com
- de8olihe@lego.com
- - wuyu wuyu@yunify.com
- - Andrei Dragomir adragomi@adobe.com
- - Christian Brüggemann mail@cbruegg.com
- - Alex McGrath Kraak amkdude@gmail.com
- - bpicode bjoern.pirnay@googlemail.com
- - Daniel Jagszent daniel@jagszent.de
- - Josiah White thegenius2009@gmail.com
- - Ishuah Kariuki kariuki@ishuah.com ishuah91@gmail.com
- - Jan Varho jan@varho.org
- - Girish Ramakrishnan girish@cloudron.io
- - LingMan LingMan@users.noreply.github.com
- - Jacob McNamee jacobmcnamee@gmail.com
- - jersou jertux@gmail.com
- - thierry thierry@substantiel.fr
- - Simon Leinen simon.leinen@gmail.com ubuntu@s3-test.novalocal
- - Dan Dascalescu ddascalescu+github@gmail.com
- - Jason Rose jason@jro.io
- - Andrew Starr-Bochicchio a.starr.b@gmail.com
- - John Leach john@johnleach.co.uk
- - Corban Raun craun@instructure.com
- - Pierre Carlson mpcarl@us.ibm.com
- - Ernest Borowski er.borowski@gmail.com
- - Remus Bunduc remus.bunduc@gmail.com
- - Iakov Davydov iakov.davydov@unil.ch dav05.gith@myths.ru
- - Jakub Tasiemski tasiemski@gmail.com
- - David Minor dminor@saymedia.com
- - Tim Cooijmans cooijmans.tim@gmail.com
- - Laurence liuxy6@gmail.com
- - Giovanni Pizzi gio.piz@gmail.com
- - Filip Bartodziej filipbartodziej@gmail.com
- - Jon Fautley jon@dead.li
- - lewapm 32110057+lewapm@users.noreply.github.com
- - Yassine Imounachen yassine256@gmail.com
- - Chris Redekop chris-redekop@users.noreply.github.com
- chris.redekop@gmail.com
- - Jon Fautley jon@adenoid.appstal.co.uk
- - Will Gunn WillGunn@users.noreply.github.com
- - Lucas Bremgartner lucas@bremis.ch
- - Jody Frankowski jody.frankowski@gmail.com
- - Andreas Roussos arouss1980@gmail.com
- - nbuchanan nbuchanan@utah.gov
- - Durval Menezes rclone@durval.com
- - Victor vb-github@viblo.se
- - Mateusz pabian.mateusz@gmail.com
- - Daniel Loader spicypixel@gmail.com
- - David0rk davidork@gmail.com
- - Alexander Neumann alexander@bumpern.de
- - Giri Badanahatti gbadanahatti@us.ibm.com@Giris-MacBook-Pro.local
- - Leo R. Lundgren leo@finalresort.org
- - wolfv wolfv6@users.noreply.github.com
- - Dave Pedu dave@davepedu.com
- - Stefan Lindblom lindblom@spotify.com
- - seuffert oliver@seuffert.biz
- - gbadanahatti 37121690+gbadanahatti@users.noreply.github.com
- - Keith Goldfarb barkofdelight@gmail.com
- - Steve Kriss steve@heptio.com
- - Chih-Hsuan Yen yan12125@gmail.com
- - Alexander Neumann fd0@users.noreply.github.com
- - Matt Holt mholt@users.noreply.github.com
- - Eri Bastos bastos.eri@gmail.com
- - Michael P. Dubner pywebmail@list.ru
- - Antoine GIRARD sapk@users.noreply.github.com
- - Mateusz Piotrowski mpp302@gmail.com
- - Animosity022 animosity22@users.noreply.github.com
- earl.texter@gmail.com
- - Peter Baumgartner pete@lincolnloop.com
- - Craig Rachel craig@craigrachel.com
- - Michael G. Noll miguno@users.noreply.github.com
- - hensur me@hensur.de
- - Oliver Heyme de8olihe@lego.com
- - Richard Yang richard@yenforyang.com
- - Piotr Oleszczyk piotr.oleszczyk@gmail.com
- - Rodrigo rodarima@gmail.com
- - NoLooseEnds NoLooseEnds@users.noreply.github.com
- - Jakub Karlicek jakub@karlicek.me
- - John Clayton john@codemonkeylabs.com
- - Kasper Byrdal Nielsen byrdal76@gmail.com
- - Benjamin Joseph Dag bjdag1234@users.noreply.github.com
- - themylogin themylogin@gmail.com
- - Onno Zweers onno.zweers@surfsara.nl
- - Jasper Lievisse Adriaanse jasper@humppa.nl
- - sandeepkru sandeep.ummadi@gmail.com
- sandeepkru@users.noreply.github.com
- - HerrH atomtigerzoo@users.noreply.github.com
- - Andrew 4030760+sparkyman215@users.noreply.github.com
- - dan smith XX1011@gmail.com
- - Oleg Kovalov iamolegkovalov@gmail.com
- - Ruben Vandamme github-com-00ff86@vandamme.email
- - Cnly minecnly@gmail.com
- - Andres Alvarez 1671935+kir4h@users.noreply.github.com
- - reddi1 xreddi@gmail.com
- - Matt Tucker matthewtckr@gmail.com
- - Sebastian Bünger buengese@gmail.com
- - Martin Polden mpolden@mpolden.no
- - Alex Chen Cnly@users.noreply.github.com
- - Denis deniskovpen@gmail.com
- - bsteiss 35940619+bsteiss@users.noreply.github.com
- - Cédric Connes cedric.connes@gmail.com
- - Dr. Tobias Quathamer toddy15@users.noreply.github.com
- - dcpu 42736967+dcpu@users.noreply.github.com
- - Sheldon Rupp me@shel.io
- - albertony 12441419+albertony@users.noreply.github.com
- - cron410 cron410@gmail.com
- - Anagh Kumar Baranwal anaghk.dos@gmail.com
- 6824881+darthShadow@users.noreply.github.com
- - Felix Brucker felix@felixbrucker.com
- - Santiago Rodríguez scollazo@users.noreply.github.com
- - Craig Miskell craig.miskell@fluxfederation.com
- - Antoine GIRARD sapk@sapk.fr
- - Joanna Marek joanna.marek@u2i.com
- - frenos frenos@users.noreply.github.com
- - ssaqua ssaqua@users.noreply.github.com
- - xnaas me@xnaas.info
- - Frantisek Fuka fuka@fuxoft.cz
- - Paul Kohout pauljkohout@yahoo.com
- - dcpu 43330287+dcpu@users.noreply.github.com
- - jackyzy823 jackyzy823@gmail.com
- - David Haguenauer ml@kurokatta.org
- - teresy hi.teresy@gmail.com
- - buergi patbuergi@gmx.de
- - Florian Gamboeck mail@floga.de
- - Ralf Hemberger 10364191+rhemberger@users.noreply.github.com
- - Scott Edlund sedlund@users.noreply.github.com
- - Erik Swanson erik@retailnext.net
- - Jake Coggiano jake@stripe.com
- - brused27 brused27@noemailaddress
- - Peter Kaminski kaminski@istori.com
- - Henry Ptasinski henry@logout.com
- - Alexander kharkovalexander@gmail.com
- - Garry McNulty garrmcnu@gmail.com
- - Mathieu Carbou mathieu.carbou@gmail.com
- - Mark Otway mark@otway.com
- - William Cocker 37018962+WilliamCocker@users.noreply.github.com
- - François Leurent 131.js@cloudyks.org
- - Arkadius Stefanski arkste@gmail.com
- - Jay dev@jaygoel.com
- - andrea rota a@xelera.eu
- - nicolov nicolov@users.noreply.github.com
- - Dario Guzik dario@guzik.com.ar
- - qip qip@users.noreply.github.com
- - yair@unicorn yair@unicorn
- - Matt Robinson brimstone@the.narro.ws
- - kayrus kay.diam@gmail.com
- - Rémy Léone remy.leone@gmail.com
- - Wojciech Smigielski wojciech.hieronim.smigielski@gmail.com
- - weetmuts oehrstroem@gmail.com
- - Jonathan vanillajonathan@users.noreply.github.com
- - James Carpenter orbsmiv@users.noreply.github.com
- - Vince vince0villamora@gmail.com
- - Nestar47 47841759+Nestar47@users.noreply.github.com
- - Six brbsix@gmail.com
- - Alexandru Bumbacea alexandru.bumbacea@booking.com
- - calisro robert.calistri@gmail.com
- - Dr.Rx david.rey@nventive.com
- - marcintustin marcintustin@users.noreply.github.com
- - jaKa Močnik jaka@koofr.net
- - Fionera fionera@fionera.de
- - Dan Walters dan@walters.io
- - Danil Semelenov sgtpep@users.noreply.github.com
- - xopez 28950736+xopez@users.noreply.github.com
- - Ben Boeckel mathstuf@gmail.com
- - Manu manu@snapdragon.cc
- - Kyle E. Mitchell kyle@kemitchell.com
- - Gary Kim gary@garykim.dev
- - Jon jonathn@github.com
- - Jeff Quinn jeffrey.quinn@bluevoyant.com
- - Peter Berbec peter@berbec.com
- - didil 1284255+didil@users.noreply.github.com
- - id01 gaviniboom@gmail.com
- - Robert Marko robimarko@gmail.com
- - Philip Harvey 32467456+pharveybattelle@users.noreply.github.com
- - JorisE JorisE@users.noreply.github.com
- - garry415 garry.415@gmail.com
- - forgems forgems@gmail.com
- - Florian Apolloner florian@apolloner.eu
- - Aleksandar Janković office@ajankovic.com
- ajankovic@users.noreply.github.com
- - Maran maran@protonmail.com
- - nguyenhuuluan434 nguyenhuuluan434@gmail.com
- - Laura Hausmann zotan@zotan.pw laura@hausmann.dev
- - yparitcher y@paritcher.com
- - AbelThar abela.tharen@gmail.com
- - Matti Niemenmaa matti.niemenmaa+git@iki.fi
- - Russell Davis russelldavis@users.noreply.github.com
- - Yi FU yi.fu@tink.se
- - Paul Millar paul.millar@desy.de
- - justinalin justinalin@qnap.com
- - EliEron subanimehd@gmail.com
- - justina777 chiahuei.lin@gmail.com
- - Chaitanya Bankanhal bchaitanya15@gmail.com
- - Michał Matczuk michal@scylladb.com
- - Macavirus macavirus@zoho.com
- - Abhinav Sharma abhi18av@users.noreply.github.com
- - ginvine 34869051+ginvine@users.noreply.github.com
- - Patrick Wang mail6543210@yahoo.com.tw
- - Cenk Alti cenkalti@gmail.com
- - Andreas Chlupka andy@chlupka.com
- - Alfonso Montero amontero@tinet.org
- - Ivan Andreev ivandeex@gmail.com
- - David Baumgold david@davidbaumgold.com
- - Lars Lehtonen lars.lehtonen@gmail.com
- - Matei David matei.david@gmail.com
- - David david.bramwell@endemolshine.com
- - Anthony Rusdi 33247310+antrusd@users.noreply.github.com
- - Richard Patel me@terorie.dev
- - 庄天翼 zty0826@gmail.com
- - SwitchJS dev@switchjs.com
- - Raphael PowershellNinja@users.noreply.github.com
- - Sezal Agrawal sezalagrawal@gmail.com
- - Tyler TylerNakamura@users.noreply.github.com
- - Brett Dutro brett.dutro@gmail.com
- - Vighnesh SK booterror99@gmail.com
- - Arijit Biswas dibbyo456@gmail.com
- - Michele Caci michele.caci@gmail.com
- - AlexandrBoltris ua2fgb@gmail.com
- - Bryce Larson blarson@saltstack.com
- - Carlos Ferreyra crypticmind@gmail.com
- - Saksham Khanna sakshamkhanna@outlook.com
- - dausruddin 5763466+dausruddin@users.noreply.github.com
- - zero-24 zero-24@users.noreply.github.com
- - Xiaoxing Ye ye@xiaoxing.us
- - Barry Muldrey barry@muldrey.net
- - Sebastian Brandt sebastian.brandt@friday.de
- - Marco Molteni marco.molteni@mailbox.org
- - Ankur Gupta ankur0493@gmail.com
- - Maciej Zimnoch maciej@scylladb.com
- - anuar45 serdaliyev.anuar@gmail.com
- - Fernando ferferga@users.noreply.github.com
- - David Cole david.cole@sohonet.com
- - Wei He git@weispot.com
- - Outvi V 19144373+outloudvi@users.noreply.github.com
- - Thomas Kriechbaumer thomas@kriechbaumer.name
- - Tennix tennix@users.noreply.github.com
- - Ole Schütt ole@schuett.name
- - Kuang-che Wu kcwu@csie.org
- - Thomas Eales wingsuit@users.noreply.github.com
- - Paul Tinsley paul.tinsley@vitalsource.com
- - Felix Hungenberg git@shiftgeist.com
- - Benjamin Richter github@dev.telepath.de
- - landall cst_zf@qq.com
- - thestigma thestigma@gmail.com
- - jtagcat 38327267+jtagcat@users.noreply.github.com
- - Damon Permezel permezel@me.com
- - boosh boosh@users.noreply.github.com
- - unbelauscht 58393353+unbelauscht@users.noreply.github.com
- - Motonori IWAMURO vmi@nifty.com
- - Benjapol Worakan benwrk@live.com
- CONTACT THE RCLONE PROJECT
- Forum
- Forum for questions and general discussion:
- - https://forum.rclone.org
- Gitub project
- The project website is at:
- - https://github.com/rclone/rclone
- There you can file bug reports or contribute pull requests.
- Twitter
- You can also follow me on twitter for rclone announcements:
- - [@njcw](https://twitter.com/njcw)
- Email
- Or if all else fails or you want to ask something private or
- confidential email Nick Craig-Wood. Please don’t email me requests for
- help - those are better directed to the forum - thanks!
|