zrok/docs/guides/drives/cli/index.html

85 lines
68 KiB
HTML
Raw Normal View History

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-guides/drives/cli" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.0">
<title data-rh="true">The Drives CLI | Zrok</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.zrok.io/docs/guides/drives/cli/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="The Drives CLI | Zrok"><meta data-rh="true" name="description" content="The zrok drives CLI tools allow for simple, ergonomic management and synchronization of local and remote files."><meta data-rh="true" property="og:description" content="The zrok drives CLI tools allow for simple, ergonomic management and synchronization of local and remote files."><link data-rh="true" rel="icon" href="/img/space-ziggy.png"><link data-rh="true" rel="canonical" href="https://docs.zrok.io/docs/guides/drives/cli/"><link data-rh="true" rel="alternate" href="https://docs.zrok.io/docs/guides/drives/cli/" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.zrok.io/docs/guides/drives/cli/" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://CO73R59OLO-dsn.algolia.net" crossorigin="anonymous"><link rel="preconnect" href="https://www.googletagmanager.com">
<script>window.dataLayer=window.dataLayer||[]</script>
<script>!function(e,t,a,n,g){e[n]=e[n]||[],e[n].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var m=t.getElementsByTagName(a)[0],r=t.createElement(a);r.async=!0,r.src="https://www.googletagmanager.com/gtm.js?id=GTM-MDFLZPK8",m.parentNode.insertBefore(r,m)}(window,document,"script","dataLayer")</script>
<link rel="search" type="application/opensearchdescription+xml" title="Zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.e053e05e.css">
<script src="/assets/js/runtime~main.4922943f.js" defer="defer"></script>
<script src="/assets/js/main.12d5b0be.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MDFLZPK8" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"dark")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a href="https://zrok.io" target="_self" rel="noopener noreferrer" class="navbar__brand"><div class="navbar__logo"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">zrok</b></a></div><div class="navbar__items navbar__items--right"><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/getting-started/">Docs</a><a href="https://github.com/orgs/openziti/projects/16" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Roadmap<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/openziti/zrok" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently dark mode)" aria-label="Switch between dark and light mode (currently dark mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0
<p>The zrok drives CLI tools allow for simple, ergonomic management and synchronization of local and remote files.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="sharing-a-drive">Sharing a Drive<a href="#sharing-a-drive" class="hash-link" aria-label="Direct link to Sharing a Drive" title="Direct link to Sharing a Drive"></a></h2>
<p>Virtual drives are shared through the <code>zrok</code> CLI using the <code>--backend-mode drive</code> flag through the <code>zrok share</code> command, using either the <code>public</code> or <code>private</code> sharing modes. We&#x27;ll use the <code>private</code> sharing mode for this example:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ mkdir /tmp/junk</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok share private --headless --backend-mode drive /tmp/junk</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.124] INFO sdk-golang/ziti.(*listenerManager).createSessionWithBackoff: {session token=[cf640aac-2706-49ae-9cc9-9a497d67d9c5]} new service session</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.145] INFO main.(*sharePrivateCommand).run: allow other to access your share with the following command:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">zrok access private wkcfb58vj51l</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>The command shown above creates an ephemeral, <code>private</code> drive share pointed at the local <code>/tmp/junk</code> folder.</p>
<p>Notice that the share token allocated by <code>zrok</code> is <code>wkcfb58vj51l</code>. We&#x27;ll use that share token to identify our virtual drive in the following operations.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="working-with-a-private-drive-share">Working with a Private Drive Share<a href="#working-with-a-private-drive-share" class="hash-link" aria-label="Direct link to Working with a Private Drive Share" title="Direct link to Working with a Private Drive Share"></a></h2>
<p>First, let&#x27;s copy a file into our virtual drive using the <code>zrok copy</code> command:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok copy LICENSE zrok://wkcfb58vj51l</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.119] INFO zrok/drives/sync.OneWay: =&gt; /LICENSE</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">copy complete!</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>We used the URL scheme <code>zrok://&lt;shareToken&gt;</code> to refer to the private virtual drive we allocated above using the <code>zrok share private</code> command. Use <code>zrok://</code> URLs with the drives CLI tools to refer to contents of private virtual drives.</p>
<p>Next, let&#x27;s get a directory listing of the virtual drive:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok ls zrok://wkcfb58vj51l</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">┌──────┬─────────┬─────────┬───────────────────────────────┐</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ TYPE │ NAME │ SIZE │ MODIFIED │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├──────┼─────────┼─────────┼───────────────────────────────┤</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ LICENSE │ 11.3 kB │ 2024-01-19 12:16:46 -0500 EST │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└──────┴─────────┴─────────┴───────────────────────────────┘</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>We can make directories on the virtual drive:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok mkdir zrok://wkcfb58vj51l/stuff</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok ls zrok://wkcfb58vj51l</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">┌──────┬─────────┬─────────┬───────────────────────────────┐</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ TYPE │ NAME │ SIZE │ MODIFIED │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├──────┼─────────┼─────────┼───────────────────────────────┤</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ LICENSE │ 11.3 kB │ 2024-01-19 12:16:46 -0500 EST │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ DIR │ stuff │ │ │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└──────┴─────────┴─────────┴───────────────────────────────┘</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>We can copy the contents of a local directory into the new directory on the virtual drive:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ ls -l util/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">total 20</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-rw-rw-r-- 1 michael michael 329 Jul 21 13:17 email.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-rw-rw-r-- 1 michael michael 456 Jul 21 13:17 headers.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-rw-rw-r-- 1 michael michael 609 Jul 21 13:17 proxy.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-rw-rw-r-- 1 michael michael 361 Jul 21 13:17 size.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-rw-rw-r-- 1 michael michael 423 Jan 2 11:57 uniqueName.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok copy util/ zrok://wkcfb58vj51l/stuff</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.123] INFO zrok/drives/sync.OneWay: =&gt; /email.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.194] INFO zrok/drives/sync.OneWay: =&gt; /headers.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.267] INFO zrok/drives/sync.OneWay: =&gt; /proxy.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.337] INFO zrok/drives/sync.OneWay: =&gt; /size.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.408] INFO zrok/drives/sync.OneWay: =&gt; /uniqueName.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">copy complete!</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok ls zrok://wkcfb58vj51l/stuff</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">┌──────┬───────────────┬───────┬───────────────────────────────┐</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ TYPE │ NAME │ SIZE │ MODIFIED │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├──────┼───────────────┼───────┼───────────────────────────────┤</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ email.go │ 329 B │ 2024-01-19 12:26:45 -0500 EST │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ headers.go │ 456 B │ 2024-01-19 12:26:45 -0500 EST │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ proxy.go │ 609 B │ 2024-01-19 12:26:45 -0500 EST │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ size.go │ 361 B │ 2024-01-19 12:26:45 -0500 EST │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ uniqueName.go │ 423 B │ 2024-01-19 12:26:45 -0500 EST │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">──────┴───────────────┴───────<E29480><E29480>
<p>And we can remove files and directories from the virtual drive:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok rm zrok://wkcfb58vj51l/LICENSE</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok ls zrok://wkcfb58vj51l</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">┌──────┬───────┬──────┬──────────┐</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ TYPE │ NAME │ SIZE │ MODIFIED │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├──────┼───────┼──────┼──────────┤</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ DIR │ stuff │ │ │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└──────┴───────┴──────┴──────────┘</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok rm zrok://wkcfb58vj51l/stuff</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok ls zrok://wkcfb58vj51l</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">┌──────┬──────┬──────┬──────────┐</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ TYPE │ NAME │ SIZE │ MODIFIED │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├──────┼──────┼──────┼──────────┤</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└──────┴──────┴──────┴──────────┘</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="working-with-public-shares">Working with Public Shares<a href="#working-with-public-shares" class="hash-link" aria-label="Direct link to Working with Public Shares" title="Direct link to Working with Public Shares"></a></h2>
<p>Public shares work very similarly to private shares, they just use a different URL scheme:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok share public --headless --backend-mode drive /tmp/junk</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.708] INFO sdk-golang/ziti.(*listenerManager).createSessionWithBackoff: {session token=[05e0f48b-242b-4fd9-8edb-259488535c47]} new service session</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.878] INFO main.(*sharePublicCommand).run: access your zrok share at the following endpoints:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> https://6kiww4bn7iok.share.zrok.io</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>The same commands, with a different URL scheme work with the <code>zrok</code> drives CLI:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok copy util/ https://6kiww4bn7iok.share.zrok.io</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.268] INFO zrok/drives/sync.OneWay: =&gt; /email.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.406] INFO zrok/drives/sync.OneWay: =&gt; /headers.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.530] INFO zrok/drives/sync.OneWay: =&gt; /proxy.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.655] INFO zrok/drives/sync.OneWay: =&gt; /size.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.714] INFO zrok/drives/sync.OneWay: =&gt; /uniqueName.go</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">copy complete!</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">michael@fourtyfour Fri Jan 19 12:42:52 ~/Repos/nf/zrok </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok ls https://6kiww4bn7iok.share.zrok.io</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">┌──────┬───────────────┬───────┬───────────────────────────────┐</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ TYPE │ NAME │ SIZE │ MODIFIED │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├──────┼───────────────┼───────┼───────────────────────────────┤</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ email.go │ 329 B │ 2023-07-21 13:17:56 -0400 EDT │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ headers.go │ 456 B │ 2023-07-21 13:17:56 -0400 EDT │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ proxy.go │ 609 B │ 2023-07-21 13:17:56 -0400 EDT │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ size.go │ 361 B │ 2023-07-21 13:17:56 -0400 EDT │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ uniqueName.go │ 423 B │ 2024-01-02 11:57:14 -0500 EST │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└──────┴───────────────┴───────┴───────────────────────────────┘</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>For basic authentication provided by public shares, the <code>zrok</code> drives CLI offers the <code>--basic-auth</code> flag, which accepts a <code>&lt;username&gt;:&lt;password&gt;</code> parameter to specify the authentication for the public virtual drive (if it&#x27;s required).</p>
<p>Alternatively, the authentication can be set using the <code>ZROK_DRIVES_BASIC_AUTH</code> environment variable:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ export ZROK_DRIVES_BASIC_AUTH=username:password</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="one-way-synchronization">One-way Synchronization<a href="#one-way-synchronization" class="hash-link" aria-label="Direct link to One-way Synchronization" title="Direct link to One-way Synchronization"></a></h2>
<p>The <code>zrok copy</code> command includes a <code>--sync</code> flag, which only copies files detected as <em>modified</em>. <code>zrok</code> considers a file with the same modification timestamp and size to be the same. Of course, this is not a strong guarantee that the files are equivalent. Future <code>zrok</code> drives versions will provide a cryptographically strong mechanism (a-la <code>rsync</code> and friends) to guarantee that files and trees of files are synchronized.</p>
<p>For now, the <code>--sync</code> flag provides a convenience mechanism to allow resuming copies of large file trees and provide a reasonable guarantee that the trees are in sync.</p>
<p>Let&#x27;s take a look at <code>zrok copy --sync</code> in action:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok copy --sync docs/ https://glmv049c62p7.share.zrok.io</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.636] INFO zrok/drives/sync.OneWay: =&gt; /_attic/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.760] INFO zrok/drives/sync.OneWay: =&gt; /_attic/network/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.816] INFO zrok/drives/sync.OneWay: =&gt; /_attic/network/_category_.json</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.928] INFO zrok/drives/sync.OneWay: =&gt; /_attic/network/prod/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.987] INFO zrok/drives/sync.OneWay: =&gt; /_attic/network/prod/ziti-ctrl.service</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.048] INFO zrok/drives/sync.OneWay: =&gt; /_attic/network/prod/ziti-ctrl.yml</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.107] INFO zrok/drives/sync.OneWay: =&gt; /_attic/network/prod/ziti-router0.service</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.167] INFO zrok/drives/sync.OneWay: =&gt; /_attic/network/prod/ziti-router0.yml</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.218] INFO zrok/drives/sync.OneWay: =&gt; /_attic/network/prod/zrok-access-public.service</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.273] INFO zrok/drives/sync.OneWay: =&gt; /_attic/network/prod/zrok-ctrl.service</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.328] INFO zrok/drives/sync.OneWay: =&gt; /_attic/network/prod/zrok-ctrl.yml</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.382] INFO zrok/drives/sync.OneWay: =&gt; /_attic/network/prod/zrok.io-network-skeleton.md</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.447] INFO zrok/drives/sync.OneWay: =&gt; /_attic/overview.md</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.572] INFO zrok/drives/sync.OneWay: =&gt; /_attic/sharing/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.622] INFO zrok/drives/sync.OneWay: =&gt; /_attic/sharing/_category_.json</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.673] INFO zrok/drives/sync.OneWay: =&gt; /_attic/sharing/reserved_services.md</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.737] INFO zrok/drives/sync.OneWay: =&gt; /_attic/sharing/sharing_modes.md</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.793] INFO zrok/drives/sync.OneWay: =&gt; /_attic/v0.2_account_requests.md</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.902] INFO zrok/drives/sync.OneWay: =&gt; /_attic/v0.4_limits.md</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 9.691] INFO zrok/drives/sync.OneWay: =&gt; /images/zrok_web_ui_empty_shares.png</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 9.812] INFO zrok/dri
<p>Because the target drive was empty, <code>zrok copy --sync</code> copied the entire contents of the local <code>docs/</code> tree into the virtual drive. However, if we run that command again, we get:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok copy --sync docs/ https://glmv049c62p7.share.zrok.io</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">copy complete!</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>The virtual drive contents are already in sync with the local filesystem tree, so there is nothing for it to copy.</p>
<p>Let&#x27;s alter the contents of the drive and run the <code>--sync</code> again:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok rm https://glmv049c62p7.share.zrok.io/images</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok copy --sync docs/ https://glmv049c62p7.share.zrok.io</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.364] INFO zrok/drives/sync.OneWay: =&gt; /images/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.456] INFO zrok/drives/sync.OneWay: =&gt; /images/zrok.png</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.795] INFO zrok/drives/sync.OneWay: =&gt; /images/zrok_cover.png</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.866] INFO zrok/drives/sync.OneWay: =&gt; /images/zrok_deployment.drawio</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 2.254] INFO zrok/drives/sync.OneWay: =&gt; /images/zrok_web_ui_empty_shares.png</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 2.340] INFO zrok/drives/sync.OneWay: =&gt; /images/zrok_web_ui_new_environment.png</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 2.391] INFO zrok/drives/sync.OneWay: =&gt; /images/zrok_zoom_to_fit.png</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">copy complete!</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Because we removed the <code>images/</code> tree from the virtual drive, <code>zrok copy --sync</code> detected this and copied the local <code>images/</code> tree back onto the virtual drive.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="drive-to-drive-copies-and-synchronization">Drive-to-Drive Copies and Synchronization<a href="#drive-to-drive-copies-and-synchronization" class="hash-link" aria-label="Direct link to Drive-to-Drive Copies and Synchronization" title="Direct link to Drive-to-Drive Copies and Synchronization"></a></h2>
<p>The <code>zrok copy</code> CLI can operate on pairs of virtual drives remotely, without ever having to store files locally. This allow for drive-to-drive copies and synchronization.</p>
<p>Here are a couple of examples:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok copy --sync https://glmv049c62p7.share.zrok.io https://glmv049c62p7.share.zrok.io</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">copy complete!</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Specifying the same URL for both the source and the target of a <code>--sync</code> operation should always result in nothing being copied... they are the same drive with the same state.</p>
<p>We can copy files between two virtual drives with a single command:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok copy --sync https://glmv049c62p7.share.zrok.io zrok://hsml272j3xzf</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 1.396] INFO zrok/drives/sync.OneWay: =&gt; /_attic/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 2.083] INFO zrok/drives/sync.OneWay: =&gt; /_attic/overview.md</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 2.704] INFO zrok/drives/sync.OneWay: =&gt; /_attic/sharing/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 118.240] INFO zrok/drives/sync.OneWay: =&gt; /images/zrok_web_console_empty.png</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 118.920] INFO zrok/drives/sync.OneWay: =&gt; /images/zrok_enable_modal.png</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 119.589] INFO zrok/drives/sync.OneWay: =&gt; /images/zrok_cover.png</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 120.214] INFO zrok/drives/sync.OneWay: =&gt; /getting-started.mdx</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">copy complete!</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok copy --sync https://glmv049c62p7.share.zrok.io zrok://hsml272j3xzf</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">copy complete!</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="copying-from-drives-to-the-local-filesystem">Copying from Drives to the Local Filesystem<a href="#copying-from-drives-to-the-local-filesystem" class="hash-link" aria-label="Direct link to Copying from Drives to the Local Filesystem" title="Direct link to Copying from Drives to the Local Filesystem"></a></h2>
<p>In the current version of the drives CLI, <code>zrok copy</code> always assumes the destination is a directory. There is currently no way to do:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok copy somefile someotherfile</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>What you&#x27;ll end up with on the local filesystem is:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">somefile</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">someotherfile/somefile</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>It&#x27;s in the backlog to support file destinations in a future release of <code>zrok</code>. So, when using <code>zrok copy</code>, always take note of the destination.</p>
<p><code>zrok copy</code> supports a default destination of <code>file://.</code>, so you can do single parameter <code>zrok copy</code> commands like this:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok ls https://azc47r3cwjds.share.zrok.io</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">┌──────┬─────────┬─────────┬───────────────────────────────┐</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ TYPE │ NAME │ SIZE │ MODIFIED │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├──────┼─────────┼─────────┼───────────────────────────────┤</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ LICENSE │ 11.3 kB │ 2023-07-21 13:17:56 -0400 EDT │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└──────┴─────────┴─────────┴───────────────────────────────┘</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok copy https://azc47r3cwjds.share.zrok.io/LICENSE</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.260] INFO zrok/drives/sync.OneWay: =&gt; /LICENSE</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">copy complete!</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ ls -l</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">total 12</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-rw-rw-r-- 1 michael michael 11346 Jan 19 13:29 LICENSE</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>You can also specify a local folder as the destination for your copy:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok copy https://azc47r3cwjds.share.zrok.io/LICENSE /tmp/inbox</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.221] INFO zrok/drives/sync.OneWay: =&gt; /LICENSE</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">copy complete! </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ l /tmp/inbox</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">total 12</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-rw-rw-r-- 1 michael michael 11346 Jan 19 13:30 LICENSE</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="unique-names-and-reserved-shares">Unique Names and Reserved Shares<a href="#unique-names-and-reserved-shares" class="hash-link" aria-label="Direct link to Unique Names and Reserved Shares" title="Direct link to Unique Names and Reserved Shares"></a></h2>
<p>Private reserved shares with unque names can be particularly useful with the drives CLI:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok reserve private -b drive --unique-name mydrive /tmp/junk</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.315] INFO main.(*reserveCommand).run: your reserved share token is &#x27;mydrive&#x27;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok share reserved --headless mydrive</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.289] INFO main.(*shareReservedCommand).run: sharing target: &#x27;/tmp/junk&#x27;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.289] INFO main.(*shareReservedCommand).run: using existing backend proxy endpoint: /tmp/junk</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.767] INFO sdk-golang/ziti.(*listenerManager).createSessionWithBackoff: {session token=[d519a436-9fb5-4207-afd5-7cbc28fb779a]} new service session</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ 0.927] INFO main.(*shareReservedCommand).run: use this command to access your zrok share: &#x27;zrok access private mydrive&#x27;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>This makes working with <code>zrok://</code> URLs particularly convenient:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ zrok ls zrok://mydrive</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">┌──────┬─────────┬─────────┬───────────────────────────────┐</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ TYPE │ NAME │ SIZE │ MODIFIED │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├──────┼─────────┼─────────┼───────────────────────────────┤</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ LICENSE │ 11.3 kB │ 2023-07-21 13:17:56 -0400 EDT │</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└──────┴─────────┴─────────┴───────────────────────────────┘</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-enhancements">Future Enhancements<a href="#future-enhancements" class="hash-link" aria-label="Direct link to Future Enhancements" title="Direct link to Future Enhancements"></a></h2>
<p>Coming in a future release of <code>zrok</code> drives are features like:</p>
<ul>
<li>two-way synchronization between multiple hosts... allowing for shared &quot;dropbox-like&quot; usage scenarios between multiple environments</li>
<li>better ergonomics for single-file destinations</li>
</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/openziti/zrok/blob/main/docs/../docs/guides/drives/cli.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/guides/self-hosting/instance-configuration/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Instance Config</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/guides/vpn/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">VPN</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#sharing-a-drive" class="table-of-contents__link toc-highlight">Sharing a Drive</a></li><li><a href="#working-with-a-private-drive-share" class="table-of-contents__link toc-highlight">Working with a Private Drive Share</a></li><li><a href="#working-with-public-shares" class="table-of-contents__link toc-highlight">Working with Public Shares</a></li><li><a href="#one-way-synchronization" class="table-of-contents__link toc-highlight">One-way Synchronization</a></li><li><a href="#drive-to-drive-copies-and-synchronization" class="table-of-contents__link toc-highlight">Drive-to-Drive Copies and Synchronization</a></li><li><a href="#copying-from-drives-to-the-local-filesystem" class="table-of-contents__link toc-highlight">Copying from Drives to the Local Filesystem</a></li><li><a href="#unique-names-and-reserved-shares" class="table-of-contents__link toc-highlight">Unique Names and Reserved Shares</a></li><li><a href="#future-enhancements" class="table-of-contents__link toc-highlight">Future Enhancements</a></li></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2024 NetFoundry Inc. Built with Docusaurus.</div></div></div></footer></div>
</body>
</html>