<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.umiacs.umd.edu/umiacs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wgeckle</id>
	<title>UMIACS - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.umiacs.umd.edu/umiacs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wgeckle"/>
	<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php/Special:Contributions/Wgeckle"/>
	<updated>2026-05-09T16:32:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM&amp;diff=12387</id>
		<title>SLURM</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM&amp;diff=12387"/>
		<updated>2025-01-14T15:37:20Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Slurm Workload Manager=&lt;br /&gt;
Slurm is an open-source workload manager designed for Linux clusters of all sizes. It provides three key functions. First, it allocates exclusive or non-exclusive access to resources (computer nodes) to users for some duration of time so they can perform work. Second, it provides a framework for starting, executing, and monitoring work (typically a parallel job) on a set of allocated nodes. Finally, it arbitrates contention for resources by managing a queue of pending work.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
:[[SLURM/JobSubmission | Submitting Jobs]]&lt;br /&gt;
:[[SLURM/JobStatus | Checking Job Status]]&lt;br /&gt;
:[[SLURM/ClusterStatus | Checking Cluster Status]]&lt;br /&gt;
:[[SLURM/Priority | Understanding Job Priority]]&lt;br /&gt;
:[[SLURM/Preemption | Job Preemption Overview]]&lt;br /&gt;
:[http://slurm.schedmd.com/documentation.html Official Documentation]&lt;br /&gt;
:[http://slurm.schedmd.com/faq.html FAQ]&lt;br /&gt;
&lt;br /&gt;
Related documentation:&lt;br /&gt;
:[[Compute/DataLocality | Optimizing Storage Performance]]&lt;br /&gt;
:[[VS Code#Cluster_Usage | Using VS Code]]&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
Below are some of the common commands used in Slurm. Further information on how to use these commands is found in the documentation linked above. To see all flags available for a command, please check the command&#039;s manual by using &amp;lt;code&amp;gt;man &amp;lt;COMMAND&amp;gt;&amp;lt;/code&amp;gt; on the command line.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/srun.html srun]====&lt;br /&gt;
srun runs a parallel job on a cluster managed by Slurm.  If necessary, it will first create a resource allocation in which to run the parallel job.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/salloc.html salloc]====&lt;br /&gt;
salloc allocates a Slurm job allocation, which is a set of resources (nodes), possibly with some set of constraints (e.g. number of processors per node).  When salloc successfully obtains the requested allocation, it then runs the command specified by the user.  Finally, when the user specified command is complete, salloc relinquishes the job allocation.  If no command is specified, salloc runs the user&#039;s default shell.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/sbatch.html sbatch]====&lt;br /&gt;
sbatch submits a batch script to Slurm.  The batch script may be given to sbatch through a file name on the command line, or if no file name is specified, sbatch will read in a script from standard input.  The batch script may contain options preceded with &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; before any executable commands in the script.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/squeue.html squeue]====&lt;br /&gt;
squeue views job and job step information for jobs managed by Slurm.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/scancel.html scancel]====&lt;br /&gt;
scancel signals or cancels jobs, job arrays, or job steps.  An arbitrary number of jobs or job steps may be signaled using job specification filters or a space separated list of specific job and/or job step IDs.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/sacct.html sacct]====&lt;br /&gt;
sacct displays job accounting data stored in the job accounting log file or Slurm database in a variety of forms for your analysis.  The sacct command displays information on jobs, job steps, status, and exitcodes by default.  You can tailor the output with the use of the &amp;lt;code&amp;gt;--format=&amp;lt;/code&amp;gt; option to specify the fields to be shown.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/sstat.html sstat]====&lt;br /&gt;
sstat displays job status information for your analysis.  The sstat command displays information pertaining to CPU, Task, Node, Resident Set Size (RSS) and Virtual Memory (VM).  You can tailor the output with the use of the &amp;lt;code&amp;gt;--fields=&amp;lt;/code&amp;gt; option to specify the fields to be shown.&lt;br /&gt;
&lt;br /&gt;
==Modules==&lt;br /&gt;
If you are trying to use [[Modules | GNU Modules]] in a Slurm job, please read the section of our [[Modules]] documentation on [[Modules#Modules_in_Non-Interactive_Shell_Sessions | non-interactive shell sessions]].  This also needs to be done if the OS version of the compute node you are scheduled on is different from the OS version of the submission node you are submitting the job from.&lt;br /&gt;
&lt;br /&gt;
==Running Jupyter Notebook on a Compute Node==&lt;br /&gt;
The steps to run a Jupyter Notebook from a compute node are listed below.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h6&amp;gt;Setting up your Python Virtual Environment&amp;lt;/h6&amp;gt;&lt;br /&gt;
[[PythonVirtualEnv | Create a Python virtual environment]] on the compute node you are assigned and [[PythonVirtualEnv#Activating_the_VirtualEnv | activate it]]. Next, install Jupyter using pip by following the steps [https://jupyter.readthedocs.io/en/latest/install/notebook-classic.html#alternative-for-experienced-python-users-installing-jupyter-with-pip here]. You may also use other environment management systems such as [https://docs.conda.io/en/latest/ Conda] if desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h6&amp;gt;Running Jupyter Notebook&amp;lt;/h6&amp;gt;&lt;br /&gt;
After you&#039;ve set up the Python virtual environment, submit a job, activate the environment within the job, and run the following command on the compute node you are assigned:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jupyter notebook --no-browser --port=8889 --ip=0.0.0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will start running the notebook on port 8889. &amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; You must keep this shell window open to be able to connect. If the submission node for the cluster you are using is not accessible via the public internet, you must also be on a machine connected to the UMIACS network or connected to our [[Network/VPN | VPN]] in order to access the Jupyter notebook once you start the SSH tunnel, so ensure this is the case before starting the tunnel. Then, on your local machine, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh -N -f -L localhost:8888:&amp;lt;NODENAME&amp;gt;:8889 &amp;lt;USERNAME&amp;gt;@&amp;lt;SUBMISSIONNODE&amp;gt;.umiacs.umd.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will tunnel port 8889 from the compute node to port 8888 on your local machine, using &amp;lt;SUBMISSIONNODE&amp;gt; as an intermediate node. Make sure to replace &amp;lt;USERNAME&amp;gt; with your username, &amp;lt;SUBMISSIONNODE&amp;gt; with the name of the submission node you want to use, and &amp;lt;NODENAME&amp;gt; with the name of the compute node you are assigned. Note that this command will not display any output if the connection is successful due to the included ssh flags. You must also keep this shell window open to be able to connect.&lt;br /&gt;
&lt;br /&gt;
For example, assuming your username is &amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt; and that you are using the [[Nexus]] cluster, have been [[Nexus#Access | assigned]] the nexusgroup submission nodes, and are assigned compute node tron00.umiacs.umd.edu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh -N -f -L localhost:8888:tron00:8889 username@nexusgroup.umiacs.umd.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then open a web browser and type in &amp;lt;code&amp;gt;localhost:8888&amp;lt;/code&amp;gt; to access the notebook. To ensure that the notebook is running on the desired compute node, open a Python notebook and write&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import socket&lt;br /&gt;
socket.gethostname()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
into one of the cells. After hitting Shift+Enter, the hostname of the compute node should be displayed.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* Later versions of Jupyter have token authentication enabled by default - you will need to prepend the &amp;lt;code&amp;gt;/?token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&amp;lt;/code&amp;gt; part of the URL provided by the terminal output after starting the notebook in order to connect if this is the case. e.g. &amp;lt;code&amp;gt;localhost:8888/?token=fcc6bd0f996e7aa89376c33cb34f7b80890502aacc97d98e&amp;lt;/code&amp;gt;&lt;br /&gt;
* If the port on the compute node mentioned in the example above (8889) is not working, it may be that someone else has already started a process (Jupyter notebook or otherwise) using that specific port number on that specific compute node. The port number can be replaced with any other [https://en.wikipedia.org/wiki/Ephemeral_port ephemeral port] number you&#039;d like, just make sure to change it in both the command you run on the compute node and the ssh command from your local machine.&lt;br /&gt;
* The SSH tunnel process is not interruptible with Ctrl+C in the terminal, so you cannot exit out of it without rendering the host port unusable. For example, if you use port 8888 on your local machine for the SSH tunnel command, then hit Ctrl+Z in the terminal, port 8888 on your local machine is no longer usable until restart. If you need to get the SSH tunnel back up before restarting your computer, the simplest workaround is to use another ephemeral port on your local machine.&lt;br /&gt;
&lt;br /&gt;
=Quick Guide to translate PBS/TORQUE to Slurm=&lt;br /&gt;
[https://en.wikipedia.org/wiki/TORQUE PBS/TORQUE] was the previous workload manager and job submission framework used at UMIACS prior to Slurm&#039;s adoption. Below is a quick guide of how to translate some common PBS/TORQUE commands to Slurm ones.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+User commands&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
!PBS/TORQUE&lt;br /&gt;
!Slurm&lt;br /&gt;
|-&lt;br /&gt;
!Job submission&lt;br /&gt;
|qsub [filename]&lt;br /&gt;
|sbatch [filename]&lt;br /&gt;
|-&lt;br /&gt;
!Job deletion&lt;br /&gt;
|qdel [job_id]&lt;br /&gt;
|scancel [job_id]&lt;br /&gt;
|-&lt;br /&gt;
!Job status (by job)&lt;br /&gt;
|qstat [job_id]&lt;br /&gt;
|squeue --job [job_id]&lt;br /&gt;
|-&lt;br /&gt;
!Full job status (by job)&lt;br /&gt;
|qstat -f [job_id]&lt;br /&gt;
|scontrol show job [job_id]&lt;br /&gt;
|-&lt;br /&gt;
!Job status (by user)&lt;br /&gt;
|qstat -u [username]&lt;br /&gt;
|squeue --user=[username]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Environment variables&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
!PBS/TORQUE&lt;br /&gt;
!Slurm&lt;br /&gt;
|-&lt;br /&gt;
!Job ID&lt;br /&gt;
|$PBS_JOBID&lt;br /&gt;
|$SLURM_JOBID&lt;br /&gt;
|-&lt;br /&gt;
!Submit Directory&lt;br /&gt;
|$PBS_O_WORKDIR&lt;br /&gt;
|$SLURM_SUBMIT_DIR&lt;br /&gt;
|-&lt;br /&gt;
!Node List&lt;br /&gt;
|$PBS_NODEFILE&lt;br /&gt;
|$SLURM_JOB_NODELIST&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Job specification&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
!PBS/TORQUE&lt;br /&gt;
!Slurm&lt;br /&gt;
|-&lt;br /&gt;
!Script directive&lt;br /&gt;
|#PBS&lt;br /&gt;
|#SBATCH&lt;br /&gt;
|-&lt;br /&gt;
!Job Name&lt;br /&gt;
| -N [name]&lt;br /&gt;
| --job-name=[name] OR -J [name]&lt;br /&gt;
|-&lt;br /&gt;
!Node Count&lt;br /&gt;
| -l nodes=[count]&lt;br /&gt;
| --nodes=[min[-max]] OR -N [min[-max]]&lt;br /&gt;
|-&lt;br /&gt;
!CPU Count&lt;br /&gt;
| -l ppn=[count]&lt;br /&gt;
| --ntasks-per-node=[count]&lt;br /&gt;
|-&lt;br /&gt;
!CPUs Per Task&lt;br /&gt;
|&lt;br /&gt;
| --cpus-per-task=[count]&lt;br /&gt;
|-&lt;br /&gt;
!Memory Size&lt;br /&gt;
| -l mem=[MB]&lt;br /&gt;
| --mem=[MB] OR --mem-per-cpu=[MB]&lt;br /&gt;
|-&lt;br /&gt;
!Wall Clock Limit&lt;br /&gt;
| -l walltime=[hh:mm:ss]&lt;br /&gt;
| --time=[min] OR --time=[days-hh:mm:ss]&lt;br /&gt;
|-&lt;br /&gt;
!Node Properties&lt;br /&gt;
| -l nodes=4:ppn=8:[property]&lt;br /&gt;
| --constraint=[list]&lt;br /&gt;
|-&lt;br /&gt;
!Standard Output File&lt;br /&gt;
| -o [file_name]&lt;br /&gt;
| --output=[file_name] OR -o [file_name]&lt;br /&gt;
|-&lt;br /&gt;
!Standard Error File&lt;br /&gt;
| -e [file_name]&lt;br /&gt;
| --error=[file_name] OR -e [file_name]&lt;br /&gt;
|-&lt;br /&gt;
!Combine stdout/stderr&lt;br /&gt;
| -j oe (both to stdout)&lt;br /&gt;
|(Default if you don&#039;t specify --error)&lt;br /&gt;
|-&lt;br /&gt;
!Job Arrays&lt;br /&gt;
| -t [array_spec]&lt;br /&gt;
| --array=[array_spec] OR -a [array_spec]&lt;br /&gt;
|-&lt;br /&gt;
!Delay Job Start&lt;br /&gt;
| -a [time]&lt;br /&gt;
| --begin=[time]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=UbuntuPrinting&amp;diff=12376</id>
		<title>UbuntuPrinting</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=UbuntuPrinting&amp;diff=12376"/>
		<updated>2024-12-18T21:46:29Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
Printing from your personal Ubuntu laptop or desktop is supported.  If you are sitting at a supported UMIACS Ubuntu LTS desktop then please see our common UNIX/Linux printing documentation for [[CUPS]].  This documentation may not work for all versions of Ubuntu.&lt;br /&gt;
&lt;br /&gt;
===Printer Accessibility===&lt;br /&gt;
In order to print you will &#039;&#039;&#039;need to be on the UMIACS internal network,&#039;&#039;&#039; either via a wired proxy drop or an [https://wiki.umiacs.umd.edu/umiacs/index.php/SecureShellTunneling SSH tunnel].&lt;br /&gt;
&lt;br /&gt;
==Connecting to a printer==&lt;br /&gt;
In order for printing to function properly, you must complete &#039;&#039;&#039;ALL&#039;&#039;&#039; of the following steps:&lt;br /&gt;
#Open a web browser and go to &amp;lt;code&amp;gt;localhost:631&amp;lt;/code&amp;gt;. This will bring up the CUPS home page.&lt;br /&gt;
#:[[File:Cups_home_page_12-2024.png|700px]]&lt;br /&gt;
#At the top of the screen, select &#039;&#039;&#039;Administration&#039;&#039;&#039;. If you&#039;re given a login prompt, enter your username and password for the computer. Select the &#039;Add Printer&#039; button.&lt;br /&gt;
#:[[File:Cups_admin_page_12-2024.png|700px]]&lt;br /&gt;
#Open a new tab in your web browser and navigate to [http://print.umiacs.umd.edu/printers http://print.umiacs.umd.edu/printers]&lt;br /&gt;
#Find the &#039;&#039;&#039;name&#039;&#039;&#039; of the printer that you wish to connect to. If you are unsure of which one to pick, see the [[PrinterQueueNaming| selecting a print queue]] page.&lt;br /&gt;
#Navigate back to the &#039;Add Printer&#039; page. Select the &#039;Internet Printing Protocol (ipp)&#039; radio button, then hit the &#039;Continue&#039; button.&lt;br /&gt;
#:[[File:Cups_ipp_radio_button_12-2024.png|450px]]&lt;br /&gt;
#Next to the &#039;Connection:&#039; field, enter &amp;lt;code&amp;gt;ipp://print.umiacs.umd.edu:631/printers/&amp;lt;/code&amp;gt; with the name of the printer added at the end. For instance, to add cps432-3208 (color printer in IRB 3208), you would enter &amp;lt;code&amp;gt;ipp://print.umiacs.umd.edu:631/printers/cps432-3208&amp;lt;/code&amp;gt; in the field. Hit &#039;Continue&#039;.&lt;br /&gt;
#:[[File:Cups_connection_entry_12-2024.png|500px]]&lt;br /&gt;
#Enter the printer &#039;&#039;&#039;name&#039;&#039;&#039; in the &#039;Name:&#039; field. It&#039;s recommended to enter useful information in the &#039;Description:&#039; and &#039;Location:&#039; fields, but it&#039;s not required. Keep &#039;Share This Printer&#039; unchecked. Hit &#039;Continue&#039;.&lt;br /&gt;
#:[[File:Cups_name_entry_12-2024.png|500px]]&lt;br /&gt;
#In the &#039;Make:&#039; list, select the brand of the printer as noted in step 4, and click &#039;Continue&#039;.&lt;br /&gt;
#:[[File:Cups_make_selection_12-2024.png|400px]]&lt;br /&gt;
#In the &#039;Model:&#039; list, select the specific model of the printer as noted in step 4. Then click &#039;Add Printer&#039;.&lt;br /&gt;
#:[[File:Cups_model_selection_12-2024.png|500px]]&lt;br /&gt;
#The printer likely requires additional configuration. When adding the printer through the CUPS interface, it is added system-wide. It can be viewed and modified in the &#039;Printers&#039; menu of the Ubuntu settings, where in Ubuntu 24.04, there is a kebab menu for each printer added. In the kebab menu, select &#039;Printing Options&#039;. We recommend changing the printer options here instead of in the CUPS browser interface, though you can make changes there if you prefer.&lt;br /&gt;
#:[[File:Ubuntu_printer_options-12-2024.png|600px]]&lt;br /&gt;
#In &#039;Page Setup&#039;, at minimum, change the media size to &#039;US Letter&#039;, unless you&#039;re specifically printing from a tray which doesn&#039;t use letter paper.  Change the &#039;Pages per side&#039;, &#039;Two-sided&#039;, and &#039;Orientation&#039; settings according to your preferences.&lt;br /&gt;
#:[[File:Ubuntu_page_setup_12-2024.png|600px]]&lt;br /&gt;
#The available settings depend on the printer you added.  For cps432-3208, there is an &#039;Installable Options&#039; menu. Use this to configure the trays according to the printer&#039;s tray configuration.&lt;br /&gt;
#:[[File:Ubuntu_tray_setup_12-2024.png|600px]]&lt;br /&gt;
#Verify this process by printing a test page, which is the top left button in the &#039;Printing Options&#039; submenu in Ubuntu 24.04. You should get the default Ubuntu test page. If you just get a page with a string of text then the printer is not properly configured, and you should verify the settings.&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Ubuntu_tray_setup_12-2024.png&amp;diff=12375</id>
		<title>File:Ubuntu tray setup 12-2024.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Ubuntu_tray_setup_12-2024.png&amp;diff=12375"/>
		<updated>2024-12-18T21:44:38Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: Ubuntu tray setup.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Ubuntu tray setup.&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Ubuntu_page_setup_12-2024.png&amp;diff=12374</id>
		<title>File:Ubuntu page setup 12-2024.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Ubuntu_page_setup_12-2024.png&amp;diff=12374"/>
		<updated>2024-12-18T21:43:46Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: Ubuntu page setup.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Ubuntu page setup.&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Ubuntu_printer_options-12-2024.png&amp;diff=12373</id>
		<title>File:Ubuntu printer options-12-2024.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Ubuntu_printer_options-12-2024.png&amp;diff=12373"/>
		<updated>2024-12-18T21:41:50Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: Ubuntu printer options.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Ubuntu printer options.&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_model_selection_12-2024.png&amp;diff=12372</id>
		<title>File:Cups model selection 12-2024.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_model_selection_12-2024.png&amp;diff=12372"/>
		<updated>2024-12-18T21:35:35Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: CUPS model selection.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
CUPS model selection.&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_make_selection_12-2024.png&amp;diff=12371</id>
		<title>File:Cups make selection 12-2024.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_make_selection_12-2024.png&amp;diff=12371"/>
		<updated>2024-12-18T21:34:22Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: CUPS make selection.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
CUPS make selection.&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_name_entry_12-2024.png&amp;diff=12370</id>
		<title>File:Cups name entry 12-2024.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_name_entry_12-2024.png&amp;diff=12370"/>
		<updated>2024-12-18T21:31:53Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: CUPS name, description, and location entries.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
CUPS name, description, and location entries.&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_connection_entry_12-2024.png&amp;diff=12369</id>
		<title>File:Cups connection entry 12-2024.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_connection_entry_12-2024.png&amp;diff=12369"/>
		<updated>2024-12-18T21:30:31Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: CUPS connection entry field.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
CUPS connection entry field.&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_ipp_radio_button_12-2024.png&amp;diff=12368</id>
		<title>File:Cups ipp radio button 12-2024.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_ipp_radio_button_12-2024.png&amp;diff=12368"/>
		<updated>2024-12-18T21:28:04Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: CUPS ipp radio button selection.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
CUPS ipp radio button selection.&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_home_page_12-2024.png&amp;diff=12367</id>
		<title>File:Cups home page 12-2024.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_home_page_12-2024.png&amp;diff=12367"/>
		<updated>2024-12-18T21:24:02Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: CUPS browser home page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
CUPS browser home page.&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_admin_page_12-2024.png&amp;diff=12366</id>
		<title>File:Cups admin page 12-2024.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Cups_admin_page_12-2024.png&amp;diff=12366"/>
		<updated>2024-12-18T21:23:06Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: CUPS browser admin page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
CUPS browser admin page.&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Snapshots:Example&amp;diff=12026</id>
		<title>Snapshots:Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Snapshots:Example&amp;diff=12026"/>
		<updated>2024-09-16T20:01:56Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note that in this example, the directory &#039;&#039;&#039;.snapshot&#039;&#039;&#039; could also be &#039;&#039;&#039;.zfs/snapshot&#039;&#039;&#039; depending on the filer serving your host. You can try to &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt; one and if it doesn&#039;t exist, try the other.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
For this example, the user is logged into &#039;&#039;&#039;host&#039;&#039;&#039; with the username &#039;&#039;&#039;username&#039;&#039;&#039;, and a virtual environment directory named &#039;&#039;&#039;virtualenv&#039;&#039;&#039; exists in the home directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ pwd&lt;br /&gt;
/nfshomes/username/virtualenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Python file named &#039;&#039;&#039;virtualenv.py&#039;&#039;&#039; exists in the directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls&lt;br /&gt;
appveyor.yml      docs         scripts    tox.ini&lt;br /&gt;
AUTHORS.txt       LICENSE.txt  setup.cfg  virtualenv_embedded&lt;br /&gt;
bin               MANIFEST.in  setup.py   virtualenv.py&lt;br /&gt;
CONTRIBUTING.rst  README.rst   tests      virtualenv_support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls -lah virtualenv.py&lt;br /&gt;
-rwxrwxr-x. 1 username username 98K Jun 12 13:54 virtualenv.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove it from the current working directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ rm virtualenv.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify that the file is removed.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls&lt;br /&gt;
appveyor.yml  CONTRIBUTING.rst  MANIFEST.in  setup.cfg  tox.ini&lt;br /&gt;
AUTHORS.txt   docs              README.rst   setup.py   virtualenv_embedded&lt;br /&gt;
bin           LICENSE.txt       scripts      tests      virtualenv_support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change directory into the most recent weekly snapshot.  In this case, it&#039;s &#039;&#039;&#039;Weekly_nfshomes_2024-06-23_00:00&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls /nfshomes/username/.snapshot&lt;br /&gt;
nfshomes_2024-06-25_00:00  nfshomes_2024-06-27_04:00&lt;br /&gt;
nfshomes_2024-06-26_00:00  nfshomes_2024-06-27_08:00&lt;br /&gt;
nfshomes_2024-06-26_12:00  nfshomes_2024-06-27_12:00&lt;br /&gt;
nfshomes_2024-06-26_16:00  Weekly_nfshomes_2024-06-16_00:00&lt;br /&gt;
nfshomes_2024-06-26_20:00  Weekly_nfshomes_2024-06-23_00:00&lt;br /&gt;
nfshomes_2024-06-27_00:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ cd /nfshomes/username/.snapshot/Weekly_nfshomes_2024-06-23_00\:00/virtualenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The file still exists in the snapshot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/.snapshot/Weekly_nfshomes_2024-06-23_00:00/virtualenv$ ls&lt;br /&gt;
appveyor.yml      docs         scripts    tox.ini&lt;br /&gt;
AUTHORS.txt       LICENSE.txt  setup.cfg  virtualenv_embedded&lt;br /&gt;
bin               MANIFEST.in  setup.py   virtualenv.py&lt;br /&gt;
CONTRIBUTING.rst  README.rst   tests      virtualenv_support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy the file back to the original directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/.snapshot/Weekly_nfshomes_2024-06-23_00:00/virtualenv$ cp virtualenv.py /nfshomes/username/virtualenv/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change back to the original directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/.snapshot/Weekly_nfshomes_2024-06-23_00:00/virtualenv$ cd /nfshomes/username/virtualenv/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Confirm that the file is restored from the snapshot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls&lt;br /&gt;
appveyor.yml      docs         scripts    tox.ini&lt;br /&gt;
AUTHORS.txt       LICENSE.txt  setup.cfg  virtualenv_embedded&lt;br /&gt;
bin               MANIFEST.in  setup.py   virtualenv.py&lt;br /&gt;
CONTRIBUTING.rst  README.rst   tests      virtualenv_support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Snapshots]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Snapshots&amp;diff=12025</id>
		<title>Snapshots</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Snapshots&amp;diff=12025"/>
		<updated>2024-09-16T19:50:36Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Snapshots are a implementation of [http://en.wikipedia.org/wiki/Copy-on-write copy-on-write] that allows for a file system to quickly take a point-in-time copy of the file system and provide access to the data through a .snapshot directory. Snapshots provide a fast, user-accessible way to recover data that has been accidentally deleted or corrupted within a recent time window, rather than having to retrieve the data from comparatively slow tape backups. They also help to span the time gap between [[NightlyBackups | full backups]].&lt;br /&gt;
&lt;br /&gt;
We provide snapshots on our Isilon, ZFS, VAST, and Qumulo filers to certain file systems. If you are ever unsure if a particular volume has snapshots enabled, please contact the [[HelpDesk | Help Desk]].&lt;br /&gt;
&lt;br /&gt;
==Snapshot Retention Policy==&lt;br /&gt;
Our core file systems are on a 4 hour snapshot cycle.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Snapshot Name&lt;br /&gt;
!Retention Length&lt;br /&gt;
!When is it taken?&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Hourly&#039;&#039;&#039;&lt;br /&gt;
|24-32 hours&lt;br /&gt;
|Every day 12am, 4am, 8am, 12pm, 4pm&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Daily&#039;&#039;&#039;&lt;br /&gt;
|2 days&lt;br /&gt;
|Every day 8pm or 12am&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Weekly&#039;&#039;&#039;&lt;br /&gt;
|1 week&lt;br /&gt;
|Every Saturday 8pm or Sunday 12am&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In other words, we retain up to either 6 or 8 hourly snapshots, 2 daily snapshots and 1 weekly snapshot. Hourly snapshots may be superseded by daily snapshots, and daily snapshots may be superseded by the weekly snapshot.&lt;br /&gt;
&lt;br /&gt;
==Snapshot Restoring==&lt;br /&gt;
If you have deleted a file by mistake and you need to get it back, you can use the snapshots directory to recopy the file.  It generally will not be visible, even when viewing hidden directories.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;It will be either&#039;&#039;&#039;:&lt;br /&gt;
* .snapshot for the Isilon, VAST, or Qumulo filers&lt;br /&gt;
* .zfs/snapshot for the ZFS filer&lt;br /&gt;
&lt;br /&gt;
The inside of one of these will look something like:&lt;br /&gt;
&lt;br /&gt;
Isilon filesystem:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ pwd&lt;br /&gt;
/nfshomes/username&lt;br /&gt;
$ cd .snapshot&lt;br /&gt;
$ ls&lt;br /&gt;
nfshomes_2024-09-14_00:00  nfshomes_2024-09-16_04:00                           &lt;br /&gt;
nfshomes_2024-09-15_00:00  nfshomes_2024-09-16_08:00                           &lt;br /&gt;
nfshomes_2024-09-15_16:00  nfshomes_2024-09-16_12:00                           &lt;br /&gt;
nfshomes_2024-09-15_20:00  Weekly_nfshomes_2024-09-08_00:00                    &lt;br /&gt;
nfshomes_2024-09-16_00:00  Weekly_nfshomes_2024-09-15_00:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ZFS filesystem:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ pwd&lt;br /&gt;
/nmhomes/username&lt;br /&gt;
$ cd .zfs/snapshot&lt;br /&gt;
$ ls&lt;br /&gt;
zfs-auto-snap_daily-2024-09-14-2000   zfs-auto-snap_hourly-2024-09-16-0000     &lt;br /&gt;
zfs-auto-snap_daily-2024-09-15-2000   zfs-auto-snap_hourly-2024-09-16-0400     &lt;br /&gt;
zfs-auto-snap_hourly-2024-09-15-0400  zfs-auto-snap_hourly-2024-09-16-0800     &lt;br /&gt;
zfs-auto-snap_hourly-2024-09-15-0800  zfs-auto-snap_hourly-2024-09-16-1200     &lt;br /&gt;
zfs-auto-snap_hourly-2024-09-15-1200  zfs-auto-snap_weekly-2024-09-14-2000     &lt;br /&gt;
zfs-auto-snap_hourly-2024-09-15-1600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For an example of file restoration, please see [[Snapshots:Example | this page]].&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Snapshots:Example&amp;diff=11923</id>
		<title>Snapshots:Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Snapshots:Example&amp;diff=11923"/>
		<updated>2024-06-27T17:13:53Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note that in this example, the directory &#039;&#039;&#039;.snapshot&#039;&#039;&#039; could also be &#039;&#039;&#039;.zfs/snapshot&#039;&#039;&#039; depending on the filer serving your host. You can try to &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt; one and if it doesn&#039;t exist, try the other.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
For this example, the user is logged into &#039;&#039;&#039;host&#039;&#039;&#039; with the username &#039;&#039;&#039;username&#039;&#039;&#039;, and a virtual environment directory named &#039;&#039;&#039;virtualenv&#039;&#039;&#039; exists in the home directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ pwd&lt;br /&gt;
/nfshomes/username/virtualenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Python file named &#039;&#039;&#039;virtualenv.py&#039;&#039;&#039; exists in the directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls&lt;br /&gt;
appveyor.yml  bin               docs         MANIFEST.in  scripts    setup.py  tox.ini              virtualenv.py&lt;br /&gt;
AUTHORS.txt   CONTRIBUTING.rst  LICENSE.txt  README.rst   setup.cfg  tests     virtualenv_embedded  virtualenv_support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls -lah virtualenv.py&lt;br /&gt;
-rwxrwxr-x. 1 username username 98K Jun 12 13:54 virtualenv.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove it from the current working directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ rm virtualenv.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify that the file is removed.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls&lt;br /&gt;
appveyor.yml  bin               docs         MANIFEST.in  scripts    setup.py  tox.ini              virtualenv_support&lt;br /&gt;
AUTHORS.txt   CONTRIBUTING.rst  LICENSE.txt  README.rst   setup.cfg  tests     virtualenv_embedded&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change directory into the most recent weekly snapshot.  In this case, it&#039;s &#039;&#039;&#039;Weekly_nfshomes_2024-06-23_00:00&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls /nfshomes/username/.snapshot&lt;br /&gt;
nfshomes_2024-06-25_00:00  nfshomes_2024-06-26_16:00  nfshomes_2024-06-27_04:00  Weekly_nfshomes_2024-06-16_00:00&lt;br /&gt;
nfshomes_2024-06-26_00:00  nfshomes_2024-06-26_20:00  nfshomes_2024-06-27_08:00  Weekly_nfshomes_2024-06-23_00:00&lt;br /&gt;
nfshomes_2024-06-26_12:00  nfshomes_2024-06-27_00:00  nfshomes_2024-06-27_12:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ cd /nfshomes/username/.snapshot/Weekly_nfshomes_2024-06-23_00\:00/virtualenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The file still exists in the snapshot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/.snapshot/Weekly_nfshomes_2024-06-23_00:00/virtualenv$ ls&lt;br /&gt;
appveyor.yml  bin               docs         MANIFEST.in  scripts    setup.py  tox.ini              virtualenv.py&lt;br /&gt;
AUTHORS.txt   CONTRIBUTING.rst  LICENSE.txt  README.rst   setup.cfg  tests     virtualenv_embedded  virtualenv_support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy the file back to the original directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/.snapshot/Weekly_nfshomes_2024-06-23_00:00/virtualenv$ cp virtualenv.py /nfshomes/username/virtualenv/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change back to the original directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/.snapshot/Weekly_nfshomes_2024-06-23_00:00/virtualenv$ cd /nfshomes/username/virtualenv/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Confirm that the file is restored from the snapshot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls&lt;br /&gt;
appveyor.yml  bin               docs         MANIFEST.in  scripts    setup.py  tox.ini              virtualenv.py&lt;br /&gt;
AUTHORS.txt   CONTRIBUTING.rst  LICENSE.txt  README.rst   setup.cfg  tests     virtualenv_embedded  virtualenv_support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Snapshots]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Snapshots:Example&amp;diff=11922</id>
		<title>Snapshots:Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Snapshots:Example&amp;diff=11922"/>
		<updated>2024-06-27T17:11:50Z</updated>

		<summary type="html">&lt;p&gt;Wgeckle: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note that in this example, the directory &#039;&#039;&#039;.snapshot&#039;&#039;&#039; could also be &#039;&#039;&#039;.zfs/snapshot&#039;&#039;&#039; depending on the filer serving your host. You can try to &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt; one and if it doesn&#039;t exist, try the other.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
For this example, the user is logged into &#039;&#039;&#039;host&#039;&#039;&#039; with the username &#039;&#039;&#039;username&#039;&#039;&#039;, and a virtual environment directory named &#039;&#039;&#039;virtualenv&#039;&#039;&#039; exists in the home directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ pwd&lt;br /&gt;
/nfshomes/username/virtualenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Python file named &#039;&#039;&#039;virtualenv.py&#039;&#039;&#039; exists in the directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls&lt;br /&gt;
appveyor.yml  bin               docs         MANIFEST.in  scripts    setup.py  tox.ini              virtualenv.py&lt;br /&gt;
AUTHORS.txt   CONTRIBUTING.rst  LICENSE.txt  README.rst   setup.cfg  tests     virtualenv_embedded  virtualenv_support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls -lah virtualenv.py&lt;br /&gt;
-rwxrwxr-x. 1 username username 98K Jun 12 13:54 virtualenv.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove it from the current working directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ rm virtualenv.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify that the file is removed.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls&lt;br /&gt;
appveyor.yml  bin               docs         MANIFEST.in  scripts    setup.py  tox.ini              virtualenv_support&lt;br /&gt;
AUTHORS.txt   CONTRIBUTING.rst  LICENSE.txt  README.rst   setup.cfg  tests     virtualenv_embedded&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change directory into the most recent weekly snapshot.  In this case, it&#039;s &#039;&#039;&#039;Weekly_nfshomes_2024-06-23_00:00&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls /nfshomes/username/.snapshot&lt;br /&gt;
nfshomes_2024-06-25_00:00  nfshomes_2024-06-26_16:00  nfshomes_2024-06-27_04:00  Weekly_nfshomes_2024-06-16_00:00&lt;br /&gt;
nfshomes_2024-06-26_00:00  nfshomes_2024-06-26_20:00  nfshomes_2024-06-27_08:00  Weekly_nfshomes_2024-06-23_00:00&lt;br /&gt;
nfshomes_2024-06-26_12:00  nfshomes_2024-06-27_00:00  nfshomes_2024-06-27_12:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ cd /nfshomes/username/.snapshot/Weekly_nfshomes_2024-06-23_00\:00/virtualenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The file still exists in the snapshot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/.snapshot/Weekly_nfshomes_2024-06-23_00:00/virtualenv$ ls&lt;br /&gt;
appveyor.yml  bin               docs         MANIFEST.in  scripts    setup.py  tox.ini              virtualenv.py&lt;br /&gt;
AUTHORS.txt   CONTRIBUTING.rst  LICENSE.txt  README.rst   setup.cfg  tests     virtualenv_embedded  virtualenv_support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy the file back to the original directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/.snapshot/Weekly_nfshomes_2024-06-23_00:00/virtualenv$ cp virtualenv.py /nfshomes/username/virtualenv/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change back to the original directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/.snapshots/Weekly_nfshomes_2024-06-23_00:00/virtualenv$ cd /nfshomes/username/virtualenv/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Confirm that the file is restored from the snapshot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@host:~/virtualenv$ ls&lt;br /&gt;
appveyor.yml  bin               docs         MANIFEST.in  scripts    setup.py  tox.ini              virtualenv.py&lt;br /&gt;
AUTHORS.txt   CONTRIBUTING.rst  LICENSE.txt  README.rst   setup.cfg  tests     virtualenv_embedded  virtualenv_support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Snapshots]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Wgeckle</name></author>
	</entry>
</feed>